From dbc7e2fe05cc1157d460189c77fa003dbc23f10b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2024 05:29:43 +0000 Subject: [PATCH] deploy: 4ad378403ab6f22993d6e8bc1fccd6da4a873037 --- 404.html | 4 +- ar/404.html | 2 +- ...6588d.ecbb1392.js => 4436588d.1ec93dc9.js} | 2 +- ...4553b.a225f720.js => bdc4553b.37fa0d24.js} | 2 +- ...0d68b.16219e29.js => e0e0d68b.8ccb1f8b.js} | 2 +- ...n.6d604e7e.js => runtime~main.ddeb3cbb.js} | 2 +- ar/category/farming/index.html | 2 +- ar/develop/auto-sdk/auto-id/index.html | 2 +- ar/develop/auto-sdk/consensus/index.html | 2 +- ar/develop/auto-sdk/drive/index.html | 2 +- ar/develop/auto-sdk/index.html | 2 +- ar/develop/auto-sdk/intro/index.html | 2 +- ar/develop/auto-sdk/utils/index.html | 2 +- ar/develop/auto-sdk/xdm/index.html | 2 +- ar/develop/intro/index.html | 2 +- ar/develop/nova/block-explorer/index.html | 2 +- ar/develop/nova/faucet/index.html | 2 +- ar/develop/nova/general/index.html | 2 +- ar/develop/nova/guides/foundry/index.html | 2 +- ar/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ar/develop/nova/guides/remix/index.html | 2 +- ar/develop/nova/index.html | 2 +- ar/develop/nova/introduction/index.html | 2 +- ar/develop/nova/metamask/index.html | 2 +- ar/farming/advanced-cli/cluster/index.html | 2 +- ar/farming/advanced-cli/install/index.html | 36 +++++++++--------- ar/farming/advanced-cli/taurus/index.html | 2 +- ar/farming/advanced-cli/tips/index.html | 2 +- ar/farming/common-problems/index.html | 4 +- ar/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- ar/farming/guides/index.html | 2 +- ar/farming/guides/port-config/index.html | 2 +- ar/farming/guides/verified-farmer/index.html | 2 +- ar/farming/intro/index.html | 2 +- ar/farming/space-acres/install/index.html | 2 +- ar/farming/space-acres/translate/index.html | 2 +- ar/farming/timekeeper/index.html | 2 +- ar/index.html | 2 +- ar/learn/academy/index.html | 2 +- ar/learn/intro/index.html | 2 +- ar/learn/security/index.html | 2 +- ar/markdown-page/index.html | 2 +- ar/participate/community/resources/index.html | 2 +- ar/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ar/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- ar/staking/intro/index.html | 2 +- ar/staking/operator/deregister/index.html | 2 +- ar/staking/operator/register/index.html | 14 +++---- ar/staking/operator/tips/index.html | 2 +- ar/staking/stake/index.html | 2 +- ar/wallets/index.html | 2 +- ar/wallets/polkadot/index.html | 2 +- ar/wallets/subwallet/index.html | 2 +- ...f0558.4d49686f.js => 0e5f0558.a375d142.js} | 2 +- ...f5292.94b6e0c0.js => 44bf5292.9a2c25a4.js} | 2 +- ...21181.26564a7a.js => a9921181.0c12728e.js} | 2 +- .../js/{main.27ba1c72.js => main.3cc70f16.js} | 4 +- ...CENSE.txt => main.3cc70f16.js.LICENSE.txt} | 0 ...n.b9ffd463.js => runtime~main.97ca7d31.js} | 2 +- category/farming/index.html | 4 +- de/404.html | 2 +- ...9c28f.6ff562ab.js => 9489c28f.69518782.js} | 2 +- ...f5f7c.12ab3aea.js => aeef5f7c.efda4e1b.js} | 2 +- ...e7d1d.cddd274f.js => c53e7d1d.1241e601.js} | 2 +- ...n.098c7233.js => runtime~main.a5f15f35.js} | 2 +- de/category/farming/index.html | 2 +- de/develop/auto-sdk/auto-id/index.html | 2 +- de/develop/auto-sdk/consensus/index.html | 2 +- de/develop/auto-sdk/drive/index.html | 2 +- de/develop/auto-sdk/index.html | 2 +- de/develop/auto-sdk/intro/index.html | 2 +- de/develop/auto-sdk/utils/index.html | 2 +- de/develop/auto-sdk/xdm/index.html | 2 +- de/develop/intro/index.html | 2 +- de/develop/nova/block-explorer/index.html | 2 +- de/develop/nova/faucet/index.html | 2 +- de/develop/nova/general/index.html | 2 +- de/develop/nova/guides/foundry/index.html | 2 +- de/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- de/develop/nova/guides/remix/index.html | 2 +- de/develop/nova/index.html | 2 +- de/develop/nova/introduction/index.html | 2 +- de/develop/nova/metamask/index.html | 2 +- de/farming/advanced-cli/cluster/index.html | 2 +- de/farming/advanced-cli/install/index.html | 36 +++++++++--------- de/farming/advanced-cli/taurus/index.html | 2 +- de/farming/advanced-cli/tips/index.html | 2 +- de/farming/common-problems/index.html | 4 +- de/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- de/farming/guides/index.html | 2 +- de/farming/guides/port-config/index.html | 2 +- de/farming/guides/verified-farmer/index.html | 2 +- de/farming/intro/index.html | 2 +- de/farming/space-acres/install/index.html | 2 +- de/farming/space-acres/translate/index.html | 2 +- de/farming/timekeeper/index.html | 2 +- de/index.html | 2 +- de/learn/academy/index.html | 2 +- de/learn/intro/index.html | 2 +- de/learn/security/index.html | 2 +- de/markdown-page/index.html | 2 +- de/participate/community/resources/index.html | 2 +- de/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- de/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- de/staking/intro/index.html | 2 +- de/staking/operator/deregister/index.html | 2 +- de/staking/operator/register/index.html | 14 +++---- de/staking/operator/tips/index.html | 2 +- de/staking/stake/index.html | 2 +- de/wallets/index.html | 2 +- de/wallets/polkadot/index.html | 2 +- de/wallets/subwallet/index.html | 2 +- develop/auto-sdk/auto-id/index.html | 4 +- develop/auto-sdk/consensus/index.html | 4 +- develop/auto-sdk/drive/index.html | 4 +- develop/auto-sdk/index.html | 4 +- develop/auto-sdk/intro/index.html | 4 +- develop/auto-sdk/utils/index.html | 4 +- develop/auto-sdk/xdm/index.html | 4 +- develop/intro/index.html | 4 +- develop/nova/block-explorer/index.html | 4 +- develop/nova/faucet/index.html | 4 +- develop/nova/general/index.html | 4 +- develop/nova/guides/foundry/index.html | 4 +- develop/nova/guides/hardhat/index.html | 4 +- .../nova/guides/local-development/index.html | 4 +- develop/nova/guides/remix/index.html | 4 +- develop/nova/index.html | 4 +- develop/nova/introduction/index.html | 4 +- develop/nova/metamask/index.html | 4 +- es/404.html | 2 +- ...4a869.c4bf1e42.js => 0cf4a869.95c5f643.js} | 2 +- ...3bc52.022668dd.js => 8673bc52.f0c39c3b.js} | 2 +- ...ba1c9.eda3d230.js => f61ba1c9.14453ad4.js} | 2 +- ...n.02a95dc2.js => runtime~main.452b1191.js} | 2 +- es/category/farming/index.html | 2 +- es/develop/auto-sdk/auto-id/index.html | 2 +- es/develop/auto-sdk/consensus/index.html | 2 +- es/develop/auto-sdk/drive/index.html | 2 +- es/develop/auto-sdk/index.html | 2 +- es/develop/auto-sdk/intro/index.html | 2 +- es/develop/auto-sdk/utils/index.html | 2 +- es/develop/auto-sdk/xdm/index.html | 2 +- es/develop/intro/index.html | 2 +- es/develop/nova/block-explorer/index.html | 2 +- es/develop/nova/faucet/index.html | 2 +- es/develop/nova/general/index.html | 2 +- es/develop/nova/guides/foundry/index.html | 2 +- es/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- es/develop/nova/guides/remix/index.html | 2 +- es/develop/nova/index.html | 2 +- es/develop/nova/introduction/index.html | 2 +- es/develop/nova/metamask/index.html | 2 +- es/farming/advanced-cli/cluster/index.html | 2 +- es/farming/advanced-cli/install/index.html | 36 +++++++++--------- es/farming/advanced-cli/taurus/index.html | 2 +- es/farming/advanced-cli/tips/index.html | 2 +- es/farming/common-problems/index.html | 4 +- es/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- es/farming/guides/index.html | 2 +- es/farming/guides/port-config/index.html | 2 +- es/farming/guides/verified-farmer/index.html | 2 +- es/farming/intro/index.html | 2 +- es/farming/space-acres/install/index.html | 2 +- es/farming/space-acres/translate/index.html | 2 +- es/farming/timekeeper/index.html | 2 +- es/index.html | 2 +- es/learn/academy/index.html | 2 +- es/learn/intro/index.html | 2 +- es/learn/security/index.html | 2 +- es/markdown-page/index.html | 2 +- es/participate/community/resources/index.html | 2 +- es/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- es/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- es/staking/intro/index.html | 2 +- es/staking/operator/deregister/index.html | 2 +- es/staking/operator/register/index.html | 14 +++---- es/staking/operator/tips/index.html | 2 +- es/staking/stake/index.html | 2 +- es/wallets/index.html | 2 +- es/wallets/polkadot/index.html | 2 +- es/wallets/subwallet/index.html | 2 +- farming/advanced-cli/cluster/index.html | 4 +- farming/advanced-cli/install/index.html | 38 +++++++++---------- farming/advanced-cli/taurus/index.html | 4 +- farming/advanced-cli/tips/index.html | 4 +- farming/common-problems/index.html | 6 +-- farming/guides/gpu-plotter/index.html | 4 +- farming/guides/grafana-dashboard/index.html | 4 +- farming/guides/index.html | 4 +- farming/guides/port-config/index.html | 4 +- farming/guides/verified-farmer/index.html | 4 +- farming/intro/index.html | 4 +- farming/space-acres/install/index.html | 4 +- farming/space-acres/translate/index.html | 4 +- farming/timekeeper/index.html | 4 +- fr/404.html | 2 +- ...0a71c.58632008.js => 3ca0a71c.dcc9d555.js} | 2 +- ...a1f0f.d5bb275f.js => 9f3a1f0f.6adea3d4.js} | 2 +- ...578c6.25d06f7c.js => e5a578c6.d892f6cc.js} | 2 +- ...n.bf47a3a4.js => runtime~main.23170921.js} | 2 +- fr/category/farming/index.html | 2 +- fr/develop/auto-sdk/auto-id/index.html | 2 +- fr/develop/auto-sdk/consensus/index.html | 2 +- fr/develop/auto-sdk/drive/index.html | 2 +- fr/develop/auto-sdk/index.html | 2 +- fr/develop/auto-sdk/intro/index.html | 2 +- fr/develop/auto-sdk/utils/index.html | 2 +- fr/develop/auto-sdk/xdm/index.html | 2 +- fr/develop/intro/index.html | 2 +- fr/develop/nova/block-explorer/index.html | 2 +- fr/develop/nova/faucet/index.html | 2 +- fr/develop/nova/general/index.html | 2 +- fr/develop/nova/guides/foundry/index.html | 2 +- fr/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- fr/develop/nova/guides/remix/index.html | 2 +- fr/develop/nova/index.html | 2 +- fr/develop/nova/introduction/index.html | 2 +- fr/develop/nova/metamask/index.html | 2 +- fr/farming/advanced-cli/cluster/index.html | 2 +- fr/farming/advanced-cli/install/index.html | 36 +++++++++--------- fr/farming/advanced-cli/taurus/index.html | 2 +- fr/farming/advanced-cli/tips/index.html | 2 +- fr/farming/common-problems/index.html | 4 +- fr/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- fr/farming/guides/index.html | 2 +- fr/farming/guides/port-config/index.html | 2 +- fr/farming/guides/verified-farmer/index.html | 2 +- fr/farming/intro/index.html | 2 +- fr/farming/space-acres/install/index.html | 2 +- fr/farming/space-acres/translate/index.html | 2 +- fr/farming/timekeeper/index.html | 2 +- fr/index.html | 2 +- fr/learn/academy/index.html | 2 +- fr/learn/intro/index.html | 2 +- fr/learn/security/index.html | 2 +- fr/markdown-page/index.html | 2 +- fr/participate/community/resources/index.html | 2 +- fr/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- fr/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- fr/staking/intro/index.html | 2 +- fr/staking/operator/deregister/index.html | 2 +- fr/staking/operator/register/index.html | 14 +++---- fr/staking/operator/tips/index.html | 2 +- fr/staking/stake/index.html | 2 +- fr/wallets/index.html | 2 +- fr/wallets/polkadot/index.html | 2 +- fr/wallets/subwallet/index.html | 2 +- id/404.html | 2 +- ...89b7b.8ea83d49.js => 69989b7b.15e03de4.js} | 2 +- ...10704.4a1b5a9c.js => c8e10704.49cffde4.js} | 2 +- ...66d15.82c7d3b0.js => e0366d15.33014dac.js} | 2 +- ...n.b3d3809f.js => runtime~main.d2683eb6.js} | 2 +- id/category/farming/index.html | 2 +- id/develop/auto-sdk/auto-id/index.html | 2 +- id/develop/auto-sdk/consensus/index.html | 2 +- id/develop/auto-sdk/drive/index.html | 2 +- id/develop/auto-sdk/index.html | 2 +- id/develop/auto-sdk/intro/index.html | 2 +- id/develop/auto-sdk/utils/index.html | 2 +- id/develop/auto-sdk/xdm/index.html | 2 +- id/develop/intro/index.html | 2 +- id/develop/nova/block-explorer/index.html | 2 +- id/develop/nova/faucet/index.html | 2 +- id/develop/nova/general/index.html | 2 +- id/develop/nova/guides/foundry/index.html | 2 +- id/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- id/develop/nova/guides/remix/index.html | 2 +- id/develop/nova/index.html | 2 +- id/develop/nova/introduction/index.html | 2 +- id/develop/nova/metamask/index.html | 2 +- id/farming/advanced-cli/cluster/index.html | 2 +- id/farming/advanced-cli/install/index.html | 36 +++++++++--------- id/farming/advanced-cli/taurus/index.html | 2 +- id/farming/advanced-cli/tips/index.html | 2 +- id/farming/common-problems/index.html | 4 +- id/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- id/farming/guides/index.html | 2 +- id/farming/guides/port-config/index.html | 2 +- id/farming/guides/verified-farmer/index.html | 2 +- id/farming/intro/index.html | 2 +- id/farming/space-acres/install/index.html | 2 +- id/farming/space-acres/translate/index.html | 2 +- id/farming/timekeeper/index.html | 2 +- id/index.html | 2 +- id/learn/academy/index.html | 2 +- id/learn/intro/index.html | 2 +- id/learn/security/index.html | 2 +- id/markdown-page/index.html | 2 +- id/participate/community/resources/index.html | 2 +- id/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- id/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- id/staking/intro/index.html | 2 +- id/staking/operator/deregister/index.html | 2 +- id/staking/operator/register/index.html | 14 +++---- id/staking/operator/tips/index.html | 2 +- id/staking/stake/index.html | 2 +- id/wallets/index.html | 2 +- id/wallets/polkadot/index.html | 2 +- id/wallets/subwallet/index.html | 2 +- index.html | 4 +- it/404.html | 2 +- ...00b25.35056f6f.js => 04900b25.ec0159e8.js} | 2 +- ...66074.7bad0de9.js => 25366074.d6ceee8e.js} | 2 +- ...8c97b.daa8bb7f.js => a698c97b.e418d6f0.js} | 2 +- ...n.8fd66d23.js => runtime~main.77cc8451.js} | 2 +- it/category/farming/index.html | 2 +- it/develop/auto-sdk/auto-id/index.html | 2 +- it/develop/auto-sdk/consensus/index.html | 2 +- it/develop/auto-sdk/drive/index.html | 2 +- it/develop/auto-sdk/index.html | 2 +- it/develop/auto-sdk/intro/index.html | 2 +- it/develop/auto-sdk/utils/index.html | 2 +- it/develop/auto-sdk/xdm/index.html | 2 +- it/develop/intro/index.html | 2 +- it/develop/nova/block-explorer/index.html | 2 +- it/develop/nova/faucet/index.html | 2 +- it/develop/nova/general/index.html | 2 +- it/develop/nova/guides/foundry/index.html | 2 +- it/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- it/develop/nova/guides/remix/index.html | 2 +- it/develop/nova/index.html | 2 +- it/develop/nova/introduction/index.html | 2 +- it/develop/nova/metamask/index.html | 2 +- it/farming/advanced-cli/cluster/index.html | 2 +- it/farming/advanced-cli/install/index.html | 36 +++++++++--------- it/farming/advanced-cli/taurus/index.html | 2 +- it/farming/advanced-cli/tips/index.html | 2 +- it/farming/common-problems/index.html | 4 +- it/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- it/farming/guides/index.html | 2 +- it/farming/guides/port-config/index.html | 2 +- it/farming/guides/verified-farmer/index.html | 2 +- it/farming/intro/index.html | 2 +- it/farming/space-acres/install/index.html | 2 +- it/farming/space-acres/translate/index.html | 2 +- it/farming/timekeeper/index.html | 2 +- it/index.html | 2 +- it/learn/academy/index.html | 2 +- it/learn/intro/index.html | 2 +- it/learn/security/index.html | 2 +- it/markdown-page/index.html | 2 +- it/participate/community/resources/index.html | 2 +- it/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- it/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- it/staking/intro/index.html | 2 +- it/staking/operator/deregister/index.html | 2 +- it/staking/operator/register/index.html | 14 +++---- it/staking/operator/tips/index.html | 2 +- it/staking/stake/index.html | 2 +- it/wallets/index.html | 2 +- it/wallets/polkadot/index.html | 2 +- it/wallets/subwallet/index.html | 2 +- ja/404.html | 2 +- ...19d25.7eb40a98.js => 2bb19d25.edaf2a37.js} | 2 +- ...dac31.7a7c0940.js => 6c9dac31.c8534abd.js} | 2 +- ...5df56.a057a1fd.js => 9745df56.f1c1ef6c.js} | 2 +- ...n.a532b675.js => runtime~main.721143fd.js} | 2 +- ja/category/farming/index.html | 2 +- ja/develop/auto-sdk/auto-id/index.html | 2 +- ja/develop/auto-sdk/consensus/index.html | 2 +- ja/develop/auto-sdk/drive/index.html | 2 +- ja/develop/auto-sdk/index.html | 2 +- ja/develop/auto-sdk/intro/index.html | 2 +- ja/develop/auto-sdk/utils/index.html | 2 +- ja/develop/auto-sdk/xdm/index.html | 2 +- ja/develop/intro/index.html | 2 +- ja/develop/nova/block-explorer/index.html | 2 +- ja/develop/nova/faucet/index.html | 2 +- ja/develop/nova/general/index.html | 2 +- ja/develop/nova/guides/foundry/index.html | 2 +- ja/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ja/develop/nova/guides/remix/index.html | 2 +- ja/develop/nova/index.html | 2 +- ja/develop/nova/introduction/index.html | 2 +- ja/develop/nova/metamask/index.html | 2 +- ja/farming/advanced-cli/cluster/index.html | 2 +- ja/farming/advanced-cli/install/index.html | 36 +++++++++--------- ja/farming/advanced-cli/taurus/index.html | 2 +- ja/farming/advanced-cli/tips/index.html | 2 +- ja/farming/common-problems/index.html | 4 +- ja/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- ja/farming/guides/index.html | 2 +- ja/farming/guides/port-config/index.html | 2 +- ja/farming/guides/verified-farmer/index.html | 2 +- ja/farming/intro/index.html | 2 +- ja/farming/space-acres/install/index.html | 2 +- ja/farming/space-acres/translate/index.html | 2 +- ja/farming/timekeeper/index.html | 2 +- ja/index.html | 2 +- ja/learn/academy/index.html | 2 +- ja/learn/intro/index.html | 2 +- ja/learn/security/index.html | 2 +- ja/markdown-page/index.html | 2 +- ja/participate/community/resources/index.html | 2 +- ja/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ja/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- ja/staking/intro/index.html | 2 +- ja/staking/operator/deregister/index.html | 2 +- ja/staking/operator/register/index.html | 14 +++---- ja/staking/operator/tips/index.html | 2 +- ja/staking/stake/index.html | 2 +- ja/wallets/index.html | 2 +- ja/wallets/polkadot/index.html | 2 +- ja/wallets/subwallet/index.html | 2 +- learn/academy/index.html | 4 +- learn/intro/index.html | 4 +- learn/security/index.html | 4 +- markdown-page/index.html | 4 +- participate/community/resources/index.html | 4 +- participate/community/tools/index.html | 4 +- .../contribute/code-of-conduct/index.html | 4 +- participate/contribute/intro/index.html | 4 +- participate/contribute/translate/index.html | 4 +- pl/404.html | 2 +- ...e8524.04b17464.js => 50fe8524.40259632.js} | 2 +- ...1f2a0.3b81bc8d.js => 6751f2a0.a49fe21e.js} | 2 +- ...98558.682055ab.js => f6c98558.dbadf36a.js} | 2 +- ...n.49fcd417.js => runtime~main.87e4b840.js} | 2 +- pl/category/farming/index.html | 2 +- pl/develop/auto-sdk/auto-id/index.html | 2 +- pl/develop/auto-sdk/consensus/index.html | 2 +- pl/develop/auto-sdk/drive/index.html | 2 +- pl/develop/auto-sdk/index.html | 2 +- pl/develop/auto-sdk/intro/index.html | 2 +- pl/develop/auto-sdk/utils/index.html | 2 +- pl/develop/auto-sdk/xdm/index.html | 2 +- pl/develop/intro/index.html | 2 +- pl/develop/nova/block-explorer/index.html | 2 +- pl/develop/nova/faucet/index.html | 2 +- pl/develop/nova/general/index.html | 2 +- pl/develop/nova/guides/foundry/index.html | 2 +- pl/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- pl/develop/nova/guides/remix/index.html | 2 +- pl/develop/nova/index.html | 2 +- pl/develop/nova/introduction/index.html | 2 +- pl/develop/nova/metamask/index.html | 2 +- pl/farming/advanced-cli/cluster/index.html | 2 +- pl/farming/advanced-cli/install/index.html | 36 +++++++++--------- pl/farming/advanced-cli/taurus/index.html | 2 +- pl/farming/advanced-cli/tips/index.html | 2 +- pl/farming/common-problems/index.html | 4 +- pl/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- pl/farming/guides/index.html | 2 +- pl/farming/guides/port-config/index.html | 2 +- pl/farming/guides/verified-farmer/index.html | 2 +- pl/farming/intro/index.html | 2 +- pl/farming/space-acres/install/index.html | 2 +- pl/farming/space-acres/translate/index.html | 2 +- pl/farming/timekeeper/index.html | 2 +- pl/index.html | 2 +- pl/learn/academy/index.html | 2 +- pl/learn/intro/index.html | 2 +- pl/learn/security/index.html | 2 +- pl/markdown-page/index.html | 2 +- pl/participate/community/resources/index.html | 2 +- pl/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- pl/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- pl/staking/intro/index.html | 2 +- pl/staking/operator/deregister/index.html | 2 +- pl/staking/operator/register/index.html | 14 +++---- pl/staking/operator/tips/index.html | 2 +- pl/staking/stake/index.html | 2 +- pl/wallets/index.html | 2 +- pl/wallets/polkadot/index.html | 2 +- pl/wallets/subwallet/index.html | 2 +- pt/404.html | 2 +- ...803b9.bf0d727a.js => 2f7803b9.63a21695.js} | 2 +- ...5e93d.86ec4aae.js => c315e93d.21946233.js} | 2 +- ...bae56.f673c80c.js => cf0bae56.f0cace21.js} | 2 +- ...n.48e3657b.js => runtime~main.a2517f30.js} | 2 +- pt/category/farming/index.html | 2 +- pt/develop/auto-sdk/auto-id/index.html | 2 +- pt/develop/auto-sdk/consensus/index.html | 2 +- pt/develop/auto-sdk/drive/index.html | 2 +- pt/develop/auto-sdk/index.html | 2 +- pt/develop/auto-sdk/intro/index.html | 2 +- pt/develop/auto-sdk/utils/index.html | 2 +- pt/develop/auto-sdk/xdm/index.html | 2 +- pt/develop/intro/index.html | 2 +- pt/develop/nova/block-explorer/index.html | 2 +- pt/develop/nova/faucet/index.html | 2 +- pt/develop/nova/general/index.html | 2 +- pt/develop/nova/guides/foundry/index.html | 2 +- pt/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- pt/develop/nova/guides/remix/index.html | 2 +- pt/develop/nova/index.html | 2 +- pt/develop/nova/introduction/index.html | 2 +- pt/develop/nova/metamask/index.html | 2 +- pt/farming/advanced-cli/cluster/index.html | 2 +- pt/farming/advanced-cli/install/index.html | 36 +++++++++--------- pt/farming/advanced-cli/taurus/index.html | 2 +- pt/farming/advanced-cli/tips/index.html | 2 +- pt/farming/common-problems/index.html | 4 +- pt/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- pt/farming/guides/index.html | 2 +- pt/farming/guides/port-config/index.html | 2 +- pt/farming/guides/verified-farmer/index.html | 2 +- pt/farming/intro/index.html | 2 +- pt/farming/space-acres/install/index.html | 2 +- pt/farming/space-acres/translate/index.html | 2 +- pt/farming/timekeeper/index.html | 2 +- pt/index.html | 2 +- pt/learn/academy/index.html | 2 +- pt/learn/intro/index.html | 2 +- pt/learn/security/index.html | 2 +- pt/markdown-page/index.html | 2 +- pt/participate/community/resources/index.html | 2 +- pt/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- pt/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- pt/staking/intro/index.html | 2 +- pt/staking/operator/deregister/index.html | 2 +- pt/staking/operator/register/index.html | 14 +++---- pt/staking/operator/tips/index.html | 2 +- pt/staking/stake/index.html | 2 +- pt/wallets/index.html | 2 +- pt/wallets/polkadot/index.html | 2 +- pt/wallets/subwallet/index.html | 2 +- ru/404.html | 2 +- ...5f349.4f32095f.js => 5e15f349.0fe2fab4.js} | 2 +- ...3b2e9.d5041d59.js => 9bd3b2e9.3cea3d09.js} | 2 +- ...a25f4.a8782b94.js => c9ca25f4.639e47e3.js} | 2 +- ...n.f9b075de.js => runtime~main.13f93c76.js} | 2 +- ru/category/farming/index.html | 2 +- ru/develop/auto-sdk/auto-id/index.html | 2 +- ru/develop/auto-sdk/consensus/index.html | 2 +- ru/develop/auto-sdk/drive/index.html | 2 +- ru/develop/auto-sdk/index.html | 2 +- ru/develop/auto-sdk/intro/index.html | 2 +- ru/develop/auto-sdk/utils/index.html | 2 +- ru/develop/auto-sdk/xdm/index.html | 2 +- ru/develop/intro/index.html | 2 +- ru/develop/nova/block-explorer/index.html | 2 +- ru/develop/nova/faucet/index.html | 2 +- ru/develop/nova/general/index.html | 2 +- ru/develop/nova/guides/foundry/index.html | 2 +- ru/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ru/develop/nova/guides/remix/index.html | 2 +- ru/develop/nova/index.html | 2 +- ru/develop/nova/introduction/index.html | 2 +- ru/develop/nova/metamask/index.html | 2 +- ru/farming/advanced-cli/cluster/index.html | 2 +- ru/farming/advanced-cli/install/index.html | 36 +++++++++--------- ru/farming/advanced-cli/taurus/index.html | 2 +- ru/farming/advanced-cli/tips/index.html | 2 +- ru/farming/common-problems/index.html | 4 +- ru/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- ru/farming/guides/index.html | 2 +- ru/farming/guides/port-config/index.html | 2 +- ru/farming/guides/verified-farmer/index.html | 2 +- ru/farming/intro/index.html | 2 +- ru/farming/space-acres/install/index.html | 2 +- ru/farming/space-acres/translate/index.html | 2 +- ru/farming/timekeeper/index.html | 2 +- ru/index.html | 2 +- ru/learn/academy/index.html | 2 +- ru/learn/intro/index.html | 2 +- ru/learn/security/index.html | 2 +- ru/markdown-page/index.html | 2 +- ru/participate/community/resources/index.html | 2 +- ru/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ru/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- ru/staking/intro/index.html | 2 +- ru/staking/operator/deregister/index.html | 2 +- ru/staking/operator/register/index.html | 14 +++---- ru/staking/operator/tips/index.html | 2 +- ru/staking/stake/index.html | 2 +- ru/wallets/index.html | 2 +- ru/wallets/polkadot/index.html | 2 +- ru/wallets/subwallet/index.html | 2 +- staking/intro/index.html | 4 +- staking/operator/deregister/index.html | 4 +- staking/operator/register/index.html | 16 ++++---- staking/operator/tips/index.html | 4 +- staking/stake/index.html | 4 +- tr/404.html | 2 +- ...ec7ce.53dba7bb.js => 77aec7ce.2270a3c6.js} | 2 +- ...7c09f.9f322f20.js => cea7c09f.ee108b7d.js} | 2 +- ...a42ef.d5dfdc48.js => e0fa42ef.66cadb40.js} | 2 +- ...n.34826a99.js => runtime~main.153dc1f7.js} | 2 +- tr/category/farming/index.html | 2 +- tr/develop/auto-sdk/auto-id/index.html | 2 +- tr/develop/auto-sdk/consensus/index.html | 2 +- tr/develop/auto-sdk/drive/index.html | 2 +- tr/develop/auto-sdk/index.html | 2 +- tr/develop/auto-sdk/intro/index.html | 2 +- tr/develop/auto-sdk/utils/index.html | 2 +- tr/develop/auto-sdk/xdm/index.html | 2 +- tr/develop/intro/index.html | 2 +- tr/develop/nova/block-explorer/index.html | 2 +- tr/develop/nova/faucet/index.html | 2 +- tr/develop/nova/general/index.html | 2 +- tr/develop/nova/guides/foundry/index.html | 2 +- tr/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- tr/develop/nova/guides/remix/index.html | 2 +- tr/develop/nova/index.html | 2 +- tr/develop/nova/introduction/index.html | 2 +- tr/develop/nova/metamask/index.html | 2 +- tr/farming/advanced-cli/cluster/index.html | 2 +- tr/farming/advanced-cli/install/index.html | 36 +++++++++--------- tr/farming/advanced-cli/taurus/index.html | 2 +- tr/farming/advanced-cli/tips/index.html | 2 +- tr/farming/common-problems/index.html | 4 +- tr/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- tr/farming/guides/index.html | 2 +- tr/farming/guides/port-config/index.html | 2 +- tr/farming/guides/verified-farmer/index.html | 2 +- tr/farming/intro/index.html | 2 +- tr/farming/space-acres/install/index.html | 2 +- tr/farming/space-acres/translate/index.html | 2 +- tr/farming/timekeeper/index.html | 2 +- tr/index.html | 2 +- tr/learn/academy/index.html | 2 +- tr/learn/intro/index.html | 2 +- tr/learn/security/index.html | 2 +- tr/markdown-page/index.html | 2 +- tr/participate/community/resources/index.html | 2 +- tr/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- tr/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- tr/staking/intro/index.html | 2 +- tr/staking/operator/deregister/index.html | 2 +- tr/staking/operator/register/index.html | 14 +++---- tr/staking/operator/tips/index.html | 2 +- tr/staking/stake/index.html | 2 +- tr/wallets/index.html | 2 +- tr/wallets/polkadot/index.html | 2 +- tr/wallets/subwallet/index.html | 2 +- uk/404.html | 2 +- ...3291d.c2c56246.js => 2ea3291d.bdfd0b64.js} | 2 +- ...f2cd2.09f46330.js => 33ff2cd2.79a22dbc.js} | 2 +- ...68588.6ba86b6b.js => 8bd68588.a2ea6823.js} | 2 +- ...n.4c68d672.js => runtime~main.77cf9775.js} | 2 +- uk/category/farming/index.html | 2 +- uk/develop/auto-sdk/auto-id/index.html | 2 +- uk/develop/auto-sdk/consensus/index.html | 2 +- uk/develop/auto-sdk/drive/index.html | 2 +- uk/develop/auto-sdk/index.html | 2 +- uk/develop/auto-sdk/intro/index.html | 2 +- uk/develop/auto-sdk/utils/index.html | 2 +- uk/develop/auto-sdk/xdm/index.html | 2 +- uk/develop/intro/index.html | 2 +- uk/develop/nova/block-explorer/index.html | 2 +- uk/develop/nova/faucet/index.html | 2 +- uk/develop/nova/general/index.html | 2 +- uk/develop/nova/guides/foundry/index.html | 2 +- uk/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- uk/develop/nova/guides/remix/index.html | 2 +- uk/develop/nova/index.html | 2 +- uk/develop/nova/introduction/index.html | 2 +- uk/develop/nova/metamask/index.html | 2 +- uk/farming/advanced-cli/cluster/index.html | 2 +- uk/farming/advanced-cli/install/index.html | 36 +++++++++--------- uk/farming/advanced-cli/taurus/index.html | 2 +- uk/farming/advanced-cli/tips/index.html | 2 +- uk/farming/common-problems/index.html | 4 +- uk/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- uk/farming/guides/index.html | 2 +- uk/farming/guides/port-config/index.html | 2 +- uk/farming/guides/verified-farmer/index.html | 2 +- uk/farming/intro/index.html | 2 +- uk/farming/space-acres/install/index.html | 2 +- uk/farming/space-acres/translate/index.html | 2 +- uk/farming/timekeeper/index.html | 2 +- uk/index.html | 2 +- uk/learn/academy/index.html | 2 +- uk/learn/intro/index.html | 2 +- uk/learn/security/index.html | 2 +- uk/markdown-page/index.html | 2 +- uk/participate/community/resources/index.html | 2 +- uk/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- uk/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- uk/staking/intro/index.html | 2 +- uk/staking/operator/deregister/index.html | 2 +- uk/staking/operator/register/index.html | 14 +++---- uk/staking/operator/tips/index.html | 2 +- uk/staking/stake/index.html | 2 +- uk/wallets/index.html | 2 +- uk/wallets/polkadot/index.html | 2 +- uk/wallets/subwallet/index.html | 2 +- vi/404.html | 2 +- ...f242d.b16eefc3.js => 0a1f242d.dd847bbd.js} | 2 +- ...201d1.8b630f3a.js => 4ef201d1.827985cf.js} | 2 +- ...75b43.33aed895.js => 51675b43.44eb2abe.js} | 2 +- ...n.f6678caa.js => runtime~main.2b62a8dc.js} | 2 +- vi/category/farming/index.html | 2 +- vi/develop/auto-sdk/auto-id/index.html | 2 +- vi/develop/auto-sdk/consensus/index.html | 2 +- vi/develop/auto-sdk/drive/index.html | 2 +- vi/develop/auto-sdk/index.html | 2 +- vi/develop/auto-sdk/intro/index.html | 2 +- vi/develop/auto-sdk/utils/index.html | 2 +- vi/develop/auto-sdk/xdm/index.html | 2 +- vi/develop/intro/index.html | 2 +- vi/develop/nova/block-explorer/index.html | 2 +- vi/develop/nova/faucet/index.html | 2 +- vi/develop/nova/general/index.html | 2 +- vi/develop/nova/guides/foundry/index.html | 2 +- vi/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- vi/develop/nova/guides/remix/index.html | 2 +- vi/develop/nova/index.html | 2 +- vi/develop/nova/introduction/index.html | 2 +- vi/develop/nova/metamask/index.html | 2 +- vi/farming/advanced-cli/cluster/index.html | 2 +- vi/farming/advanced-cli/install/index.html | 36 +++++++++--------- vi/farming/advanced-cli/taurus/index.html | 2 +- vi/farming/advanced-cli/tips/index.html | 2 +- vi/farming/common-problems/index.html | 4 +- vi/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- vi/farming/guides/index.html | 2 +- vi/farming/guides/port-config/index.html | 2 +- vi/farming/guides/verified-farmer/index.html | 2 +- vi/farming/intro/index.html | 2 +- vi/farming/space-acres/install/index.html | 2 +- vi/farming/space-acres/translate/index.html | 2 +- vi/farming/timekeeper/index.html | 2 +- vi/index.html | 2 +- vi/learn/academy/index.html | 2 +- vi/learn/intro/index.html | 2 +- vi/learn/security/index.html | 2 +- vi/markdown-page/index.html | 2 +- vi/participate/community/resources/index.html | 2 +- vi/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- vi/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- vi/staking/intro/index.html | 2 +- vi/staking/operator/deregister/index.html | 2 +- vi/staking/operator/register/index.html | 14 +++---- vi/staking/operator/tips/index.html | 2 +- vi/staking/stake/index.html | 2 +- vi/wallets/index.html | 2 +- vi/wallets/polkadot/index.html | 2 +- vi/wallets/subwallet/index.html | 2 +- wallets/index.html | 4 +- wallets/polkadot/index.html | 4 +- wallets/subwallet/index.html | 4 +- zh/404.html | 2 +- ...f32e8.26006354.js => 285f32e8.ce1fa969.js} | 2 +- ...e784e.6bab72e6.js => 56ae784e.a34390af.js} | 2 +- ...7ca13.ec796d04.js => f1e7ca13.193296a3.js} | 2 +- ...n.5968bda4.js => runtime~main.55bf6dbe.js} | 2 +- zh/category/farming/index.html | 2 +- zh/develop/auto-sdk/auto-id/index.html | 2 +- zh/develop/auto-sdk/consensus/index.html | 2 +- zh/develop/auto-sdk/drive/index.html | 2 +- zh/develop/auto-sdk/index.html | 2 +- zh/develop/auto-sdk/intro/index.html | 2 +- zh/develop/auto-sdk/utils/index.html | 2 +- zh/develop/auto-sdk/xdm/index.html | 2 +- zh/develop/intro/index.html | 2 +- zh/develop/nova/block-explorer/index.html | 2 +- zh/develop/nova/faucet/index.html | 2 +- zh/develop/nova/general/index.html | 2 +- zh/develop/nova/guides/foundry/index.html | 2 +- zh/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- zh/develop/nova/guides/remix/index.html | 2 +- zh/develop/nova/index.html | 2 +- zh/develop/nova/introduction/index.html | 2 +- zh/develop/nova/metamask/index.html | 2 +- zh/farming/advanced-cli/cluster/index.html | 2 +- zh/farming/advanced-cli/install/index.html | 36 +++++++++--------- zh/farming/advanced-cli/taurus/index.html | 2 +- zh/farming/advanced-cli/tips/index.html | 2 +- zh/farming/common-problems/index.html | 4 +- zh/farming/guides/gpu-plotter/index.html | 2 +- .../guides/grafana-dashboard/index.html | 2 +- zh/farming/guides/index.html | 2 +- zh/farming/guides/port-config/index.html | 2 +- zh/farming/guides/verified-farmer/index.html | 2 +- zh/farming/intro/index.html | 2 +- zh/farming/space-acres/install/index.html | 2 +- zh/farming/space-acres/translate/index.html | 2 +- zh/farming/timekeeper/index.html | 2 +- zh/index.html | 2 +- zh/learn/academy/index.html | 2 +- zh/learn/intro/index.html | 2 +- zh/learn/security/index.html | 2 +- zh/markdown-page/index.html | 2 +- zh/participate/community/resources/index.html | 2 +- zh/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- zh/participate/contribute/intro/index.html | 2 +- .../contribute/translate/index.html | 2 +- zh/staking/intro/index.html | 2 +- zh/staking/operator/deregister/index.html | 2 +- zh/staking/operator/register/index.html | 14 +++---- zh/staking/operator/tips/index.html | 2 +- zh/staking/stake/index.html | 2 +- zh/wallets/index.html | 2 +- zh/wallets/polkadot/index.html | 2 +- zh/wallets/subwallet/index.html | 2 +- 842 files changed, 1254 insertions(+), 1254 deletions(-) rename ar/assets/js/{4436588d.ecbb1392.js => 4436588d.1ec93dc9.js} (97%) rename ar/assets/js/{bdc4553b.a225f720.js => bdc4553b.37fa0d24.js} (98%) rename ar/assets/js/{e0e0d68b.16219e29.js => e0e0d68b.8ccb1f8b.js} (96%) rename ar/assets/js/{runtime~main.6d604e7e.js => runtime~main.ddeb3cbb.js} (65%) rename assets/js/{0e5f0558.4d49686f.js => 0e5f0558.a375d142.js} (98%) rename assets/js/{44bf5292.94b6e0c0.js => 44bf5292.9a2c25a4.js} (97%) rename assets/js/{a9921181.26564a7a.js => a9921181.0c12728e.js} (96%) rename assets/js/{main.27ba1c72.js => main.3cc70f16.js} (99%) rename assets/js/{main.27ba1c72.js.LICENSE.txt => main.3cc70f16.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.b9ffd463.js => runtime~main.97ca7d31.js} (56%) rename de/assets/js/{9489c28f.6ff562ab.js => 9489c28f.69518782.js} (96%) rename de/assets/js/{aeef5f7c.12ab3aea.js => aeef5f7c.efda4e1b.js} (98%) rename de/assets/js/{c53e7d1d.cddd274f.js => c53e7d1d.1241e601.js} (97%) rename de/assets/js/{runtime~main.098c7233.js => runtime~main.a5f15f35.js} (96%) rename es/assets/js/{0cf4a869.c4bf1e42.js => 0cf4a869.95c5f643.js} (98%) rename es/assets/js/{8673bc52.022668dd.js => 8673bc52.f0c39c3b.js} (97%) rename es/assets/js/{f61ba1c9.eda3d230.js => f61ba1c9.14453ad4.js} (96%) rename es/assets/js/{runtime~main.02a95dc2.js => runtime~main.452b1191.js} (96%) rename fr/assets/js/{3ca0a71c.58632008.js => 3ca0a71c.dcc9d555.js} (96%) rename fr/assets/js/{9f3a1f0f.d5bb275f.js => 9f3a1f0f.6adea3d4.js} (98%) rename fr/assets/js/{e5a578c6.25d06f7c.js => e5a578c6.d892f6cc.js} (97%) rename fr/assets/js/{runtime~main.bf47a3a4.js => runtime~main.23170921.js} (60%) rename id/assets/js/{69989b7b.8ea83d49.js => 69989b7b.15e03de4.js} (97%) rename id/assets/js/{c8e10704.4a1b5a9c.js => c8e10704.49cffde4.js} (98%) rename id/assets/js/{e0366d15.82c7d3b0.js => e0366d15.33014dac.js} (96%) rename id/assets/js/{runtime~main.b3d3809f.js => runtime~main.d2683eb6.js} (96%) rename it/assets/js/{04900b25.35056f6f.js => 04900b25.ec0159e8.js} (98%) rename it/assets/js/{25366074.7bad0de9.js => 25366074.d6ceee8e.js} (97%) rename it/assets/js/{a698c97b.daa8bb7f.js => a698c97b.e418d6f0.js} (96%) rename it/assets/js/{runtime~main.8fd66d23.js => runtime~main.77cc8451.js} (66%) rename ja/assets/js/{2bb19d25.7eb40a98.js => 2bb19d25.edaf2a37.js} (98%) rename ja/assets/js/{6c9dac31.7a7c0940.js => 6c9dac31.c8534abd.js} (97%) rename ja/assets/js/{9745df56.a057a1fd.js => 9745df56.f1c1ef6c.js} (96%) rename ja/assets/js/{runtime~main.a532b675.js => runtime~main.721143fd.js} (68%) rename pl/assets/js/{50fe8524.04b17464.js => 50fe8524.40259632.js} (98%) rename pl/assets/js/{6751f2a0.3b81bc8d.js => 6751f2a0.a49fe21e.js} (96%) rename pl/assets/js/{f6c98558.682055ab.js => f6c98558.dbadf36a.js} (97%) rename pl/assets/js/{runtime~main.49fcd417.js => runtime~main.87e4b840.js} (96%) rename pt/assets/js/{2f7803b9.bf0d727a.js => 2f7803b9.63a21695.js} (97%) rename pt/assets/js/{c315e93d.86ec4aae.js => c315e93d.21946233.js} (96%) rename pt/assets/js/{cf0bae56.f673c80c.js => cf0bae56.f0cace21.js} (98%) rename pt/assets/js/{runtime~main.48e3657b.js => runtime~main.a2517f30.js} (63%) rename ru/assets/js/{5e15f349.4f32095f.js => 5e15f349.0fe2fab4.js} (96%) rename ru/assets/js/{9bd3b2e9.d5041d59.js => 9bd3b2e9.3cea3d09.js} (98%) rename ru/assets/js/{c9ca25f4.a8782b94.js => c9ca25f4.639e47e3.js} (97%) rename ru/assets/js/{runtime~main.f9b075de.js => runtime~main.13f93c76.js} (96%) rename tr/assets/js/{77aec7ce.53dba7bb.js => 77aec7ce.2270a3c6.js} (98%) rename tr/assets/js/{cea7c09f.9f322f20.js => cea7c09f.ee108b7d.js} (96%) rename tr/assets/js/{e0fa42ef.d5dfdc48.js => e0fa42ef.66cadb40.js} (97%) rename tr/assets/js/{runtime~main.34826a99.js => runtime~main.153dc1f7.js} (71%) rename uk/assets/js/{2ea3291d.c2c56246.js => 2ea3291d.bdfd0b64.js} (96%) rename uk/assets/js/{33ff2cd2.09f46330.js => 33ff2cd2.79a22dbc.js} (98%) rename uk/assets/js/{8bd68588.6ba86b6b.js => 8bd68588.a2ea6823.js} (97%) rename uk/assets/js/{runtime~main.4c68d672.js => runtime~main.77cf9775.js} (95%) rename vi/assets/js/{0a1f242d.b16eefc3.js => 0a1f242d.dd847bbd.js} (97%) rename vi/assets/js/{4ef201d1.8b630f3a.js => 4ef201d1.827985cf.js} (96%) rename vi/assets/js/{51675b43.33aed895.js => 51675b43.44eb2abe.js} (98%) rename vi/assets/js/{runtime~main.f6678caa.js => runtime~main.2b62a8dc.js} (96%) rename zh/assets/js/{285f32e8.26006354.js => 285f32e8.ce1fa969.js} (96%) rename zh/assets/js/{56ae784e.6bab72e6.js => 56ae784e.a34390af.js} (98%) rename zh/assets/js/{f1e7ca13.ec796d04.js => f1e7ca13.193296a3.js} (98%) rename zh/assets/js/{runtime~main.5968bda4.js => runtime~main.55bf6dbe.js} (97%) diff --git a/404.html b/404.html index 7051bfb4cc0..a02751e278e 100644 --- a/404.html +++ b/404.html @@ -12,8 +12,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/ar/404.html b/ar/404.html index 37617bab051..408ae63d7ed 100644 --- a/ar/404.html +++ b/ar/404.html @@ -12,7 +12,7 @@ - + diff --git a/ar/assets/js/4436588d.ecbb1392.js b/ar/assets/js/4436588d.1ec93dc9.js similarity index 97% rename from ar/assets/js/4436588d.ecbb1392.js rename to ar/assets/js/4436588d.1ec93dc9.js index 33b3d2a7863..13b13a5949e 100644 --- a/ar/assets/js/4436588d.ecbb1392.js +++ b/ar/assets/js/4436588d.1ec93dc9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[143],{8562:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ar/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ar/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ar/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"\u0645\u0632\u0627\u0631\u0639",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[143],{8562:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ar/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ar/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ar/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"\u0645\u0632\u0627\u0631\u0639",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/ar/assets/js/bdc4553b.a225f720.js b/ar/assets/js/bdc4553b.37fa0d24.js similarity index 98% rename from ar/assets/js/bdc4553b.a225f720.js rename to ar/assets/js/bdc4553b.37fa0d24.js index 2118f3dc2fa..69a4d4e3997 100644 --- a/ar/assets/js/bdc4553b.a225f720.js +++ b/ar/assets/js/bdc4553b.37fa0d24.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9297],{4637:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ar/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/ar/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ar/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9297],{4637:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ar/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/ar/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ar/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/ar/assets/js/e0e0d68b.16219e29.js b/ar/assets/js/e0e0d68b.8ccb1f8b.js similarity index 96% rename from ar/assets/js/e0e0d68b.16219e29.js rename to ar/assets/js/e0e0d68b.8ccb1f8b.js index 8173899dce3..f201a040929 100644 --- a/ar/assets/js/e0e0d68b.16219e29.js +++ b/ar/assets/js/e0e0d68b.8ccb1f8b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9031],{825:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0645\u0632\u0627\u0631\u0639","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","CLI","\u062b\u0646\u0627\u0626\u064a\u0627\u062a","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ar/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0645\u0632\u0627\u0631\u0639","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","CLI","\u062b\u0646\u0627\u0626\u064a\u0627\u062a","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/ar/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ar/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9031],{825:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0645\u0632\u0627\u0631\u0639","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","CLI","\u062b\u0646\u0627\u0626\u064a\u0627\u062a","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ar/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0645\u0632\u0627\u0631\u0639","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","CLI","\u062b\u0646\u0627\u0626\u064a\u0627\u062a","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/ar/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ar/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/ar/assets/js/runtime~main.6d604e7e.js b/ar/assets/js/runtime~main.ddeb3cbb.js similarity index 65% rename from ar/assets/js/runtime~main.6d604e7e.js rename to ar/assets/js/runtime~main.ddeb3cbb.js index 677412a9348..30daec26dd8 100644 --- a/ar/assets/js/runtime~main.6d604e7e.js +++ b/ar/assets/js/runtime~main.ddeb3cbb.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,c,t,r={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,c,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(f=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,c,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var f=2&c&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({143:"4436588d",279:"17d9b19a",941:"82d21c3c",1012:"5e290e07",1235:"a7456010",1386:"7775cfd0",1432:"c89a23c0",1444:"1774e838",1582:"62d0db3f",1646:"865a158c",1837:"00948bd3",2145:"c0d5e683",2569:"bf5612e1",2803:"913dfbcb",3038:"df20ed19",3082:"6e6bb85c",3123:"b39d28ca",3225:"9a118183",3496:"1a9801f5",3610:"5ae9e0a5",3676:"38c2282a",3759:"6cb84887",4134:"393be207",4215:"f70e4295",4427:"35845b30",4583:"1df93b7f",4626:"313239e1",4872:"14407e84",4884:"bc512657",4904:"33d8be73",5184:"ef8f1d8d",5303:"1e1adddd",5420:"c36e072c",5742:"aba21aa0",6006:"68eaaf71",6061:"1f391b9e",6062:"a1cc76ae",6738:"af27fe5e",6969:"14eb3368",7098:"a7bd4aaa",7874:"8319886f",8006:"5d9dce4a",8353:"7e234807",8401:"17896441",8627:"012e89f5",8710:"1c785638",8909:"1d867a6a",9031:"e0e0d68b",9048:"a94703ab",9073:"7c819db0",9200:"7e20936c",9218:"df9c989c",9289:"5277a143",9297:"bdc4553b",9329:"88a6d0a0",9510:"14ba5576",9647:"5e95c892",9668:"5ceb1184",9745:"af84bfa0",9762:"e1f2eb1e"}[e]||e)+"."+{143:"ecbb1392",279:"0ba0dbd7",941:"1e3d5326",1012:"bc4da5b6",1235:"deb810c9",1386:"7a669d42",1432:"40275a66",1444:"fa726154",1582:"b09f0374",1646:"5501a5fd",1688:"433c2b5b",1837:"01960f27",2145:"e8cc7c63",2237:"c851d8b1",2440:"ecd0621f",2569:"17648872",2803:"5e50bc2c",3038:"7f98a23e",3082:"40ae41a4",3123:"5888e151",3225:"e8f106b2",3496:"8cdac2a7",3610:"1657fefc",3676:"f91a1772",3759:"9bc9f711",4134:"d6ce847f",4215:"d00053b0",4324:"b14b8aad",4427:"a07142ff",4583:"c0d080f8",4626:"cd6422c8",4872:"f8c46a69",4884:"4abbd701",4904:"99c76cda",5049:"7f13b97c",5184:"54b0dce6",5303:"d0103a96",5394:"83d77ce3",5420:"1df726a6",5742:"08d6695f",6006:"d7b49216",6061:"fc18f174",6062:"da9183c3",6688:"86f0bb7d",6738:"939ab19a",6969:"4f11b87f",7098:"c4e87eeb",7874:"12cda8b9",8006:"1724aa24",8353:"8d881393",8401:"3769c7ca",8627:"62fa50b6",8710:"b029a952",8909:"d2a90691",8913:"0680f2c1",9031:"16219e29",9048:"5d6981a0",9073:"5e71386a",9200:"3b76ae7d",9218:"d7871fd7",9289:"9bedf431",9297:"a225f720",9329:"50c3753a",9462:"be2eb63e",9510:"302a5083",9647:"e4c313e0",9668:"ed91a11f",9745:"868fe9d6",9762:"72b16c51"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},t="portal:",b.l=(e,a,d,r)=>{if(c[e])c[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var t=c[e];if(delete c[e],f.parentNode&&f.parentNode.removeChild(f),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ar/",b.gca=function(e){return e={17896441:"8401","4436588d":"143","17d9b19a":"279","82d21c3c":"941","5e290e07":"1012",a7456010:"1235","7775cfd0":"1386",c89a23c0:"1432","1774e838":"1444","62d0db3f":"1582","865a158c":"1646","00948bd3":"1837",c0d5e683:"2145",bf5612e1:"2569","913dfbcb":"2803",df20ed19:"3038","6e6bb85c":"3082",b39d28ca:"3123","9a118183":"3225","1a9801f5":"3496","5ae9e0a5":"3610","38c2282a":"3676","6cb84887":"3759","393be207":"4134",f70e4295:"4215","35845b30":"4427","1df93b7f":"4583","313239e1":"4626","14407e84":"4872",bc512657:"4884","33d8be73":"4904",ef8f1d8d:"5184","1e1adddd":"5303",c36e072c:"5420",aba21aa0:"5742","68eaaf71":"6006","1f391b9e":"6061",a1cc76ae:"6062",af27fe5e:"6738","14eb3368":"6969",a7bd4aaa:"7098","8319886f":"7874","5d9dce4a":"8006","7e234807":"8353","012e89f5":"8627","1c785638":"8710","1d867a6a":"8909",e0e0d68b:"9031",a94703ab:"9048","7c819db0":"9073","7e20936c":"9200",df9c989c:"9218","5277a143":"9289",bdc4553b:"9297","88a6d0a0":"9329","14ba5576":"9510","5e95c892":"9647","5ceb1184":"9668",af84bfa0:"9745",e1f2eb1e:"9762"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var c=b.o(e,a)?e[a]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>c=e[a]=[d,t]));d.push(c[2]=t);var r=b.p+b.u(a),f=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",f.name="ChunkLoadError",f.type=t,f.request=r,c[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var c,t,r=d[0],f=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(c in f)b.o(f,c)&&(b.m[c]=f[c]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,t,c,r={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,t,c)=>{if(!d){var r=1/0;for(i=0;i=c)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(f=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,t,c]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var c=Object.create(null);b.r(c);var r={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(c,r),c},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({143:"4436588d",279:"17d9b19a",941:"82d21c3c",1012:"5e290e07",1235:"a7456010",1386:"7775cfd0",1432:"c89a23c0",1444:"1774e838",1582:"62d0db3f",1646:"865a158c",1837:"00948bd3",2145:"c0d5e683",2569:"bf5612e1",2803:"913dfbcb",3038:"df20ed19",3082:"6e6bb85c",3123:"b39d28ca",3225:"9a118183",3496:"1a9801f5",3610:"5ae9e0a5",3676:"38c2282a",3759:"6cb84887",4134:"393be207",4215:"f70e4295",4427:"35845b30",4583:"1df93b7f",4626:"313239e1",4872:"14407e84",4884:"bc512657",4904:"33d8be73",5184:"ef8f1d8d",5303:"1e1adddd",5420:"c36e072c",5742:"aba21aa0",6006:"68eaaf71",6061:"1f391b9e",6062:"a1cc76ae",6738:"af27fe5e",6969:"14eb3368",7098:"a7bd4aaa",7874:"8319886f",8006:"5d9dce4a",8353:"7e234807",8401:"17896441",8627:"012e89f5",8710:"1c785638",8909:"1d867a6a",9031:"e0e0d68b",9048:"a94703ab",9073:"7c819db0",9200:"7e20936c",9218:"df9c989c",9289:"5277a143",9297:"bdc4553b",9329:"88a6d0a0",9510:"14ba5576",9647:"5e95c892",9668:"5ceb1184",9745:"af84bfa0",9762:"e1f2eb1e"}[e]||e)+"."+{143:"1ec93dc9",279:"0ba0dbd7",941:"1e3d5326",1012:"bc4da5b6",1235:"deb810c9",1386:"7a669d42",1432:"40275a66",1444:"fa726154",1582:"b09f0374",1646:"5501a5fd",1688:"433c2b5b",1837:"01960f27",2145:"e8cc7c63",2237:"c851d8b1",2440:"ecd0621f",2569:"17648872",2803:"5e50bc2c",3038:"7f98a23e",3082:"40ae41a4",3123:"5888e151",3225:"e8f106b2",3496:"8cdac2a7",3610:"1657fefc",3676:"f91a1772",3759:"9bc9f711",4134:"d6ce847f",4215:"d00053b0",4324:"b14b8aad",4427:"a07142ff",4583:"c0d080f8",4626:"cd6422c8",4872:"f8c46a69",4884:"4abbd701",4904:"99c76cda",5049:"7f13b97c",5184:"54b0dce6",5303:"d0103a96",5394:"83d77ce3",5420:"1df726a6",5742:"08d6695f",6006:"d7b49216",6061:"fc18f174",6062:"da9183c3",6688:"86f0bb7d",6738:"939ab19a",6969:"4f11b87f",7098:"c4e87eeb",7874:"12cda8b9",8006:"1724aa24",8353:"8d881393",8401:"3769c7ca",8627:"62fa50b6",8710:"b029a952",8909:"d2a90691",8913:"0680f2c1",9031:"8ccb1f8b",9048:"5d6981a0",9073:"5e71386a",9200:"3b76ae7d",9218:"d7871fd7",9289:"9bedf431",9297:"37fa0d24",9329:"50c3753a",9462:"be2eb63e",9510:"302a5083",9647:"e4c313e0",9668:"ed91a11f",9745:"868fe9d6",9762:"72b16c51"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},c="portal:",b.l=(e,a,d,r)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var c=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),c&&c.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ar/",b.gca=function(e){return e={17896441:"8401","4436588d":"143","17d9b19a":"279","82d21c3c":"941","5e290e07":"1012",a7456010:"1235","7775cfd0":"1386",c89a23c0:"1432","1774e838":"1444","62d0db3f":"1582","865a158c":"1646","00948bd3":"1837",c0d5e683:"2145",bf5612e1:"2569","913dfbcb":"2803",df20ed19:"3038","6e6bb85c":"3082",b39d28ca:"3123","9a118183":"3225","1a9801f5":"3496","5ae9e0a5":"3610","38c2282a":"3676","6cb84887":"3759","393be207":"4134",f70e4295:"4215","35845b30":"4427","1df93b7f":"4583","313239e1":"4626","14407e84":"4872",bc512657:"4884","33d8be73":"4904",ef8f1d8d:"5184","1e1adddd":"5303",c36e072c:"5420",aba21aa0:"5742","68eaaf71":"6006","1f391b9e":"6061",a1cc76ae:"6062",af27fe5e:"6738","14eb3368":"6969",a7bd4aaa:"7098","8319886f":"7874","5d9dce4a":"8006","7e234807":"8353","012e89f5":"8627","1c785638":"8710","1d867a6a":"8909",e0e0d68b:"9031",a94703ab:"9048","7c819db0":"9073","7e20936c":"9200",df9c989c:"9218","5277a143":"9289",bdc4553b:"9297","88a6d0a0":"9329","14ba5576":"9510","5e95c892":"9647","5ceb1184":"9668",af84bfa0:"9745",e1f2eb1e:"9762"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise(((d,c)=>t=e[a]=[d,c]));d.push(t[2]=c);var r=b.p+b.u(a),f=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var c=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+c+": "+r+")",f.name="ChunkLoadError",f.type=c,f.request=r,t[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var t,c,r=d[0],f=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(d);n - + diff --git a/ar/develop/auto-sdk/auto-id/index.html b/ar/develop/auto-sdk/auto-id/index.html index d027505c655..84dfc430e59 100644 --- a/ar/develop/auto-sdk/auto-id/index.html +++ b/ar/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/consensus/index.html b/ar/develop/auto-sdk/consensus/index.html index d4dc59b611d..afca9c0427a 100644 --- a/ar/develop/auto-sdk/consensus/index.html +++ b/ar/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/drive/index.html b/ar/develop/auto-sdk/drive/index.html index 130e9787e8b..361ef725491 100644 --- a/ar/develop/auto-sdk/drive/index.html +++ b/ar/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/index.html b/ar/develop/auto-sdk/index.html index 5c309eefafa..10a19bf753d 100644 --- a/ar/develop/auto-sdk/index.html +++ b/ar/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/intro/index.html b/ar/develop/auto-sdk/intro/index.html index 2f57a22c5e9..db97b098183 100644 --- a/ar/develop/auto-sdk/intro/index.html +++ b/ar/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/utils/index.html b/ar/develop/auto-sdk/utils/index.html index dd6e25865ef..0c99e297861 100644 --- a/ar/develop/auto-sdk/utils/index.html +++ b/ar/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/xdm/index.html b/ar/develop/auto-sdk/xdm/index.html index f6cfbd49391..a813b7fdc6e 100644 --- a/ar/develop/auto-sdk/xdm/index.html +++ b/ar/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/intro/index.html b/ar/develop/intro/index.html index 1f867b69eb7..a94a78c7fae 100644 --- a/ar/develop/intro/index.html +++ b/ar/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/block-explorer/index.html b/ar/develop/nova/block-explorer/index.html index da67b707deb..ce68443eb2a 100644 --- a/ar/develop/nova/block-explorer/index.html +++ b/ar/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/faucet/index.html b/ar/develop/nova/faucet/index.html index 09ebbea12bf..a32936d5b38 100644 --- a/ar/develop/nova/faucet/index.html +++ b/ar/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/general/index.html b/ar/develop/nova/general/index.html index e05c773f361..043a498bc87 100644 --- a/ar/develop/nova/general/index.html +++ b/ar/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/foundry/index.html b/ar/develop/nova/guides/foundry/index.html index e3ac57842cf..d7107c5048d 100644 --- a/ar/develop/nova/guides/foundry/index.html +++ b/ar/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/hardhat/index.html b/ar/develop/nova/guides/hardhat/index.html index 72fbd9c4ecb..1964cbf9dab 100644 --- a/ar/develop/nova/guides/hardhat/index.html +++ b/ar/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/local-development/index.html b/ar/develop/nova/guides/local-development/index.html index e5ca210446f..19c52c5713b 100644 --- a/ar/develop/nova/guides/local-development/index.html +++ b/ar/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/remix/index.html b/ar/develop/nova/guides/remix/index.html index c2a95c8f0b5..ec9d6bcab25 100644 --- a/ar/develop/nova/guides/remix/index.html +++ b/ar/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/index.html b/ar/develop/nova/index.html index 52886161be7..79d5985fe75 100644 --- a/ar/develop/nova/index.html +++ b/ar/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/introduction/index.html b/ar/develop/nova/introduction/index.html index 97a14d9681d..f1d8c855b8a 100644 --- a/ar/develop/nova/introduction/index.html +++ b/ar/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/metamask/index.html b/ar/develop/nova/metamask/index.html index e6b71f8aede..1ceb4a3ea0d 100644 --- a/ar/develop/nova/metamask/index.html +++ b/ar/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/cluster/index.html b/ar/farming/advanced-cli/cluster/index.html index 95f89a70dce..66e796d7527 100644 --- a/ar/farming/advanced-cli/cluster/index.html +++ b/ar/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/install/index.html b/ar/farming/advanced-cli/install/index.html index 38eff28e5d9..55a31f75c1c 100644 --- a/ar/farming/advanced-cli/install/index.html +++ b/ar/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

+
chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/ar/farming/advanced-cli/taurus/index.html b/ar/farming/advanced-cli/taurus/index.html index be692f20ec3..ef87d8bbe7a 100644 --- a/ar/farming/advanced-cli/taurus/index.html +++ b/ar/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/tips/index.html b/ar/farming/advanced-cli/tips/index.html index cc32e70cc0b..f189313ae0e 100644 --- a/ar/farming/advanced-cli/tips/index.html +++ b/ar/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/common-problems/index.html b/ar/farming/common-problems/index.html index e5aaa092e8f..c46ea34dead 100644 --- a/ar/farming/common-problems/index.html +++ b/ar/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/ar/farming/guides/gpu-plotter/index.html b/ar/farming/guides/gpu-plotter/index.html index cb77cc2ae59..fb2f95e8a45 100644 --- a/ar/farming/guides/gpu-plotter/index.html +++ b/ar/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/grafana-dashboard/index.html b/ar/farming/guides/grafana-dashboard/index.html index e98f3a982b9..3bcbe3c9fb9 100644 --- a/ar/farming/guides/grafana-dashboard/index.html +++ b/ar/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/index.html b/ar/farming/guides/index.html index 506bbbda9d5..f86c237b4bd 100644 --- a/ar/farming/guides/index.html +++ b/ar/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/port-config/index.html b/ar/farming/guides/port-config/index.html index 4b0b490d3a2..3632e789b99 100644 --- a/ar/farming/guides/port-config/index.html +++ b/ar/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/verified-farmer/index.html b/ar/farming/guides/verified-farmer/index.html index 707814b2522..781d426141f 100644 --- a/ar/farming/guides/verified-farmer/index.html +++ b/ar/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/intro/index.html b/ar/farming/intro/index.html index fe7234595c9..6ac22fa20dc 100644 --- a/ar/farming/intro/index.html +++ b/ar/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/space-acres/install/index.html b/ar/farming/space-acres/install/index.html index 3c616ae4fe1..a1b718cc2e1 100644 --- a/ar/farming/space-acres/install/index.html +++ b/ar/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/space-acres/translate/index.html b/ar/farming/space-acres/translate/index.html index 6616b7621d9..34f110105cd 100644 --- a/ar/farming/space-acres/translate/index.html +++ b/ar/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/timekeeper/index.html b/ar/farming/timekeeper/index.html index 572558b74cc..9135711ba11 100644 --- a/ar/farming/timekeeper/index.html +++ b/ar/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/index.html b/ar/index.html index 1c5f6a8766e..386a6d1a593 100644 --- a/ar/index.html +++ b/ar/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/academy/index.html b/ar/learn/academy/index.html index fddbc7f23d1..f5b96be0581 100644 --- a/ar/learn/academy/index.html +++ b/ar/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/intro/index.html b/ar/learn/intro/index.html index fa6e22c8369..b6a307bd882 100644 --- a/ar/learn/intro/index.html +++ b/ar/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/security/index.html b/ar/learn/security/index.html index d999c2e609b..cec18fecb0c 100644 --- a/ar/learn/security/index.html +++ b/ar/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/markdown-page/index.html b/ar/markdown-page/index.html index 8d6cab0f761..6293a20ed99 100644 --- a/ar/markdown-page/index.html +++ b/ar/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/community/resources/index.html b/ar/participate/community/resources/index.html index 2db0eb63585..3a38e1f47a6 100644 --- a/ar/participate/community/resources/index.html +++ b/ar/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/community/tools/index.html b/ar/participate/community/tools/index.html index 04ccc5b5916..2b3a7444c5c 100644 --- a/ar/participate/community/tools/index.html +++ b/ar/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/code-of-conduct/index.html b/ar/participate/contribute/code-of-conduct/index.html index a0380f67572..e6e01f67e5f 100644 --- a/ar/participate/contribute/code-of-conduct/index.html +++ b/ar/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/intro/index.html b/ar/participate/contribute/intro/index.html index acfb4eed1c6..ac63eff2a70 100644 --- a/ar/participate/contribute/intro/index.html +++ b/ar/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/translate/index.html b/ar/participate/contribute/translate/index.html index 4161adecd20..178b2f26f7a 100644 --- a/ar/participate/contribute/translate/index.html +++ b/ar/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/intro/index.html b/ar/staking/intro/index.html index 86f93a4d903..8a1d214909d 100644 --- a/ar/staking/intro/index.html +++ b/ar/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/operator/deregister/index.html b/ar/staking/operator/deregister/index.html index a58b055b332..f0f6ac55615 100644 --- a/ar/staking/operator/deregister/index.html +++ b/ar/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/operator/register/index.html b/ar/staking/operator/register/index.html index 0100463ac80..824a6c85137 100644 --- a/ar/staking/operator/register/index.html +++ b/ar/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/ar/staking/operator/tips/index.html b/ar/staking/operator/tips/index.html index bf5f58951a3..eb30f2c7583 100644 --- a/ar/staking/operator/tips/index.html +++ b/ar/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/stake/index.html b/ar/staking/stake/index.html index 8ca43634412..9743cb81abb 100644 --- a/ar/staking/stake/index.html +++ b/ar/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/wallets/index.html b/ar/wallets/index.html index 2f5f8a63ce4..40dcbb10dc9 100644 --- a/ar/wallets/index.html +++ b/ar/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/wallets/polkadot/index.html b/ar/wallets/polkadot/index.html index 3224255c4d9..d7081cb385f 100644 --- a/ar/wallets/polkadot/index.html +++ b/ar/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/wallets/subwallet/index.html b/ar/wallets/subwallet/index.html index afd43773551..921b0c27367 100644 --- a/ar/wallets/subwallet/index.html +++ b/ar/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/assets/js/0e5f0558.4d49686f.js b/assets/js/0e5f0558.a375d142.js similarity index 98% rename from assets/js/0e5f0558.4d49686f.js rename to assets/js/0e5f0558.a375d142.js index f600079cc58..42cb0999b66 100644 --- a/assets/js/0e5f0558.4d49686f.js +++ b/assets/js/0e5f0558.a375d142.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4849],{4909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/staking/intro"},next:{title:"Deregister an Operator",permalink:"/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4849],{4909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/staking/intro"},next:{title:"Deregister an Operator",permalink:"/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/assets/js/44bf5292.94b6e0c0.js b/assets/js/44bf5292.9a2c25a4.js similarity index 97% rename from assets/js/44bf5292.94b6e0c0.js rename to assets/js/44bf5292.9a2c25a4.js index 86a8c6748e9..be586ddcfc1 100644 --- a/assets/js/44bf5292.94b6e0c0.js +++ b/assets/js/44bf5292.9a2c25a4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4155],{2818:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4155],{2818:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a9921181.26564a7a.js b/assets/js/a9921181.0c12728e.js similarity index 96% rename from assets/js/a9921181.26564a7a.js rename to assets/js/a9921181.0c12728e.js index 5a2911f64c2..e3069e33396 100644 --- a/assets/js/a9921181.26564a7a.js +++ b/assets/js/a9921181.0c12728e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8515],{4537:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8515],{4537:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/assets/js/main.27ba1c72.js b/assets/js/main.3cc70f16.js similarity index 99% rename from assets/js/main.27ba1c72.js rename to assets/js/main.3cc70f16.js index e92991a8445..1cb2576f65d 100644 --- a/assets/js/main.27ba1c72.js +++ b/assets/js/main.3cc70f16.js @@ -1,2 +1,2 @@ -/*! For license information please see main.27ba1c72.js.LICENSE.txt */ -(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8792],{9188:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(6540);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},463:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(463),a=n.n(r),o=n(4054);const i={"05f00ca8":[()=>Promise.all([n.e(1869),n.e(2408)]).then(n.bind(n,9584)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/port-config.mdx",9584],"060c9da0":[()=>n.e(4862).then(n.t.bind(n,6142,19)),"@generated/docusaurus-plugin-content-docs/default/p/farming-guides-28b.json",6142],"06683f66":[()=>n.e(9456).then(n.bind(n,6426)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-farming-cluster.mdx",6426],"0e5f0558":[()=>Promise.all([n.e(1869),n.e(5394),n.e(4849)]).then(n.bind(n,4909)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",4909],"118c0595":[()=>n.e(8245).then(n.bind(n,5735)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-xdm.md",5735],"11bc8d76":[()=>Promise.all([n.e(1869),n.e(3547)]).then(n.bind(n,7807)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",7807],"14eb3368":[()=>Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,7247)),"@theme/DocCategoryGeneratedIndexPage",7247],17896441:[()=>Promise.all([n.e(1869),n.e(5394),n.e(2440),n.e(8401)]).then(n.bind(n,8632)),"@theme/DocItem",8632],"1a50bb86":[()=>Promise.all([n.e(1869),n.e(1868)]).then(n.bind(n,2944)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/intro.mdx",2944],"1df93b7f":[()=>n.e(4583).then(n.bind(n,6866)),"@site/src/pages/index.tsx",6866],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(5394),n.e(2440),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"219356da":[()=>n.e(6832).then(n.bind(n,3566)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/space-acres/translate_space_acres.md",3566],"22ce8ab6":[()=>n.e(9942).then(n.bind(n,2697)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-utils.md",2697],"22dd74f7":[()=>n.e(1567).then(n.t.bind(n,5226,19)),"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",5226],"2f909f67":[()=>Promise.all([n.e(1869),n.e(5394),n.e(6308)]).then(n.bind(n,7316)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/deregister-operator.mdx",7316],"33b25d2b":[()=>n.e(7282).then(n.bind(n,6656)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/block_explorer.md",6656],"3451640b":[()=>n.e(3368).then(n.t.bind(n,8466,19)),"@generated/docusaurus-plugin-content-docs/default/p/develop-auto-sdk-bc7.json",8466],"393be207":[()=>n.e(4134).then(n.bind(n,633)),"@site/src/pages/markdown-page.md",633],"413a666c":[()=>Promise.all([n.e(1869),n.e(1995)]).then(n.bind(n,3425)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-tips.mdx",3425],"44bf5292":[()=>Promise.all([n.e(1869),n.e(4155)]).then(n.bind(n,2818)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",2818],"453504d6":[()=>Promise.all([n.e(1869),n.e(3184)]).then(n.bind(n,1504)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/security.md",1504],"45e84c8a":[()=>n.e(7755).then(n.bind(n,3726)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/intro.md",3726],"4905fc56":[()=>n.e(999).then(n.bind(n,4857)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/intro.md",4857],"4a131490":[()=>n.e(4474).then(n.bind(n,7199)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/verify-farmer.md",7199],"4c042ec9":[()=>n.e(2379).then(n.bind(n,6752)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/code-of-conduct.mdx",6752],"4d126344":[()=>n.e(4143).then(n.bind(n,8282)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/faucet.md",8282],"4ff06830":[()=>n.e(4476).then(n.t.bind(n,3018,19)),"@generated/docusaurus-plugin-content-docs/default/p/category-farming-b10.json",3018],"5419918d":[()=>n.e(9396).then(n.bind(n,1194)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/remix_guide.md",1194],"5c49f32e":[()=>n.e(3376).then(n.bind(n,2475)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/community/resources.mdx",2475],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"65c8fd9c":[()=>n.e(4799).then(n.bind(n,3660)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/wallets/polkadot.md",3660],"662ffd2e":[()=>n.e(7286).then(n.bind(n,2170)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/foundry_guide.md",2170],"66a8244a":[()=>n.e(4491).then(n.t.bind(n,5973,19)),"@generated/docusaurus-plugin-content-docs/default/p/develop-nova-0b3.json",5973],"737d42be":[()=>Promise.all([n.e(1869),n.e(5394),n.e(4865)]).then(n.bind(n,8612)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/space-acres/install.mdx",8612],78701537:[()=>n.e(4711).then(n.t.bind(n,9509,19)),"@generated/docusaurus-plugin-content-docs/default/p/wallets-30a.json",9509],"86d9053f":[()=>n.e(2750).then(n.bind(n,3134)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/staking.md",3134],"9bcb03d7":[()=>Promise.all([n.e(1869),n.e(5394),n.e(6385)]).then(n.bind(n,6722)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/taurus-network.mdx",6722],"9dac239a":[()=>Promise.all([n.e(1869),n.e(1915)]).then(n.bind(n,7642)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/translate.md",7642],a41ae2b1:[()=>Promise.all([n.e(1869),n.e(5394),n.e(112)]).then(n.bind(n,1088)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/tips-operator.mdx",1088],a5f8ae67:[()=>n.e(1400).then(n.bind(n,7413)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/intro.md",7413],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,4766)),"@theme/DocRoot",4766],a9921181:[()=>Promise.all([n.e(1869),n.e(5394),n.e(8515)]).then(n.bind(n,4537)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",4537],aa9e0a32:[()=>n.e(9033).then(n.bind(n,8091)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/wallets/subwallet.md",8091],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],b23e3acb:[()=>n.e(3372).then(n.bind(n,373)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/hardhat_guide.md",373],b8c29134:[()=>n.e(6285).then(n.bind(n,1553)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/grafana-dashboard.md",1553],c0701f9f:[()=>n.e(8215).then(n.bind(n,5982)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/intro.md",5982],c15330b1:[()=>n.e(9493).then(n.bind(n,9742)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/academy.mdx",9742],c435babb:[()=>n.e(8649).then(n.bind(n,9263)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-id.md",9263],c46ff8fb:[()=>n.e(1936).then(n.bind(n,9593)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/community/tools.mdx",9593],db294877:[()=>n.e(1608).then(n.bind(n,9241)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/general-information.md",9241],def50d34:[()=>n.e(1488).then(n.bind(n,3014)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/intro.md",3014],e14761ab:[()=>Promise.all([n.e(1869),n.e(2788)]).then(n.bind(n,3405)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/timekeeping.md",3405],ea18547f:[()=>n.e(3586).then(n.bind(n,1530)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/setting-up-metamask.md",1530],ec9608a6:[()=>n.e(6783).then(n.bind(n,9312)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/intro.mdx",9312],ee76913c:[()=>n.e(8578).then(n.bind(n,7928)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-drive.md",7928],fa362710:[()=>n.e(6765).then(n.bind(n,4683)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-consensus.md",4683],ff483d82:[()=>n.e(3968).then(n.bind(n,2929)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/local_development.md",2929]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/",component:d("/","e5f"),exact:!0},{path:"/",component:d("/","dd1"),routes:[{path:"/",component:d("/","b5d"),routes:[{path:"/",component:d("/","798"),routes:[{path:"/category/farming",component:d("/category/farming","fd9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk",component:d("/develop/auto-sdk","203"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/auto-id",component:d("/develop/auto-sdk/auto-id","d48"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/consensus",component:d("/develop/auto-sdk/consensus","50c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/drive",component:d("/develop/auto-sdk/drive","c9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/intro",component:d("/develop/auto-sdk/intro","e73"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/utils",component:d("/develop/auto-sdk/utils","7b6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/auto-sdk/xdm",component:d("/develop/auto-sdk/xdm","e12"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/intro",component:d("/develop/intro","de2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova",component:d("/develop/nova","048"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/block-explorer",component:d("/develop/nova/block-explorer","753"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/faucet",component:d("/develop/nova/faucet","239"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/general",component:d("/develop/nova/general","aaa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/guides/foundry",component:d("/develop/nova/guides/foundry","a8c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/guides/hardhat",component:d("/develop/nova/guides/hardhat","16b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/guides/local-development",component:d("/develop/nova/guides/local-development","bc3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/guides/remix",component:d("/develop/nova/guides/remix","af7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/introduction",component:d("/develop/nova/introduction","25b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/develop/nova/metamask",component:d("/develop/nova/metamask","1a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/advanced-cli/cluster",component:d("/farming/advanced-cli/cluster","ca3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/advanced-cli/install",component:d("/farming/advanced-cli/install","4e6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/advanced-cli/taurus",component:d("/farming/advanced-cli/taurus","b3c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/advanced-cli/tips",component:d("/farming/advanced-cli/tips","9a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/common-problems",component:d("/farming/common-problems","830"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/guides",component:d("/farming/guides","5fc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/guides/gpu-plotter",component:d("/farming/guides/gpu-plotter","c23"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/guides/grafana-dashboard",component:d("/farming/guides/grafana-dashboard","6bc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/guides/port-config",component:d("/farming/guides/port-config","517"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/guides/verified-farmer",component:d("/farming/guides/verified-farmer","414"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/intro",component:d("/farming/intro","724"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/space-acres/install",component:d("/farming/space-acres/install","937"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/space-acres/translate",component:d("/farming/space-acres/translate","0d6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/farming/timekeeper",component:d("/farming/timekeeper","2f5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/academy",component:d("/learn/academy","fe2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/intro",component:d("/learn/intro","8cc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/security",component:d("/learn/security","099"),exact:!0,sidebar:"tutorialSidebar"},{path:"/participate/community/resources",component:d("/participate/community/resources","3d7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/participate/community/tools",component:d("/participate/community/tools","884"),exact:!0,sidebar:"tutorialSidebar"},{path:"/participate/contribute/code-of-conduct",component:d("/participate/contribute/code-of-conduct","c29"),exact:!0,sidebar:"tutorialSidebar"},{path:"/participate/contribute/intro",component:d("/participate/contribute/intro","d26"),exact:!0,sidebar:"tutorialSidebar"},{path:"/participate/contribute/translate",component:d("/participate/contribute/translate","4d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/staking/intro",component:d("/staking/intro","e6e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/staking/operator/deregister",component:d("/staking/operator/deregister","e6b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/staking/operator/register",component:d("/staking/operator/register","120"),exact:!0,sidebar:"tutorialSidebar"},{path:"/staking/operator/tips",component:d("/staking/operator/tips","4a8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/staking/stake",component:d("/staking/stake","432"),exact:!0,sidebar:"tutorialSidebar"},{path:"/wallets",component:d("/wallets","f99"),exact:!0,sidebar:"tutorialSidebar"},{path:"/wallets/polkadot",component:d("/wallets/polkadot","a93"),exact:!0,sidebar:"tutorialSidebar"},{path:"/wallets/subwallet",component:d("/wallets/subwallet","626"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const c=[n(1911),n(119),n(6134),n(6294),n(1043)];var u=n(8328),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(4586),b=n(6025),y=n(6342),v=n(1003),w=n(2131),k=n(4090),x=n(2967),S=n(440),_=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.Ks)((0,b.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function T(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,y.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(E,{}),(0,f.jsx)(_.A,{tag:x.C,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const A=new Map;var L=n(6125),P=n(6988),j=n(205);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,j.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),N("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const M=I,F="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
    \n

    Your Docusaurus site did not load properly.

    \n

    A very common reason is a wrong site baseUrl configuration.

    \n

    Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

    \n

    We suggest trying baseUrl =

    \n
    \n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(M,{location:e,children:G})}function Y(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(P.l,{children:(0,f.jsxs)(L.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(V,{}),(0,f.jsx)(T,{}),(0,f.jsx)(U,{}),(0,f.jsx)(K,{})]}),(0,f.jsx)(q,{})]})})})}var Q=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),R(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const oe=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(Y,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};R(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"learn/intro","docs":[{"id":"develop/auto_sdk/auto-consensus","path":"/develop/auto-sdk/consensus","sidebar":"tutorialSidebar"},{"id":"develop/auto_sdk/auto-drive","path":"/develop/auto-sdk/drive","sidebar":"tutorialSidebar"},{"id":"develop/auto_sdk/auto-id","path":"/develop/auto-sdk/auto-id","sidebar":"tutorialSidebar"},{"id":"develop/auto_sdk/auto-utils","path":"/develop/auto-sdk/utils","sidebar":"tutorialSidebar"},{"id":"develop/auto_sdk/auto-xdm","path":"/develop/auto-sdk/xdm","sidebar":"tutorialSidebar"},{"id":"develop/auto_sdk/intro","path":"/develop/auto-sdk/intro","sidebar":"tutorialSidebar"},{"id":"develop/intro","path":"/develop/intro","sidebar":"tutorialSidebar"},{"id":"develop/nova/additional-guides/foundry_guide","path":"/develop/nova/guides/foundry","sidebar":"tutorialSidebar"},{"id":"develop/nova/additional-guides/hardhat_guide","path":"/develop/nova/guides/hardhat","sidebar":"tutorialSidebar"},{"id":"develop/nova/additional-guides/local_development","path":"/develop/nova/guides/local-development","sidebar":"tutorialSidebar"},{"id":"develop/nova/additional-guides/remix_guide","path":"/develop/nova/guides/remix","sidebar":"tutorialSidebar"},{"id":"develop/nova/general-information","path":"/develop/nova/general","sidebar":"tutorialSidebar"},{"id":"develop/nova/intro","path":"/develop/nova/introduction","sidebar":"tutorialSidebar"},{"id":"develop/nova/Resources/block_explorer","path":"/develop/nova/block-explorer","sidebar":"tutorialSidebar"},{"id":"develop/nova/Resources/faucet","path":"/develop/nova/faucet","sidebar":"tutorialSidebar"},{"id":"develop/nova/setting-up-metamask","path":"/develop/nova/metamask","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/additional-guides/gpu-plotter","path":"/farming/guides/gpu-plotter","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/additional-guides/grafana-dashboard","path":"/farming/guides/grafana-dashboard","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/additional-guides/port-config","path":"/farming/guides/port-config","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/additional-guides/verify-farmer","path":"/farming/guides/verified-farmer","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/advanced-cli/cli-farming-cluster","path":"/farming/advanced-cli/cluster","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/advanced-cli/cli-install","path":"/farming/advanced-cli/install","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/advanced-cli/cli-tips","path":"/farming/advanced-cli/tips","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/advanced-cli/taurus-network","path":"/farming/advanced-cli/taurus","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/common-problems","path":"/farming/common-problems","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/intro","path":"/farming/intro","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/space-acres/install","path":"/farming/space-acres/install","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/farming/space-acres/translate_space_acres","path":"/farming/space-acres/translate","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/staking/intro","path":"/staking/intro","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/staking/operators/deregister-operator","path":"/staking/operator/deregister","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/staking/operators/register-operator","path":"/staking/operator/register","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/staking/operators/tips-operator","path":"/staking/operator/tips","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/staking/staking","path":"/staking/stake","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/timekeeping","path":"/farming/timekeeper","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/wallets/polkadot","path":"/wallets/polkadot","sidebar":"tutorialSidebar"},{"id":"farming-&-staking/wallets/subwallet","path":"/wallets/subwallet","sidebar":"tutorialSidebar"},{"id":"learn/academy","path":"/learn/academy","sidebar":"tutorialSidebar"},{"id":"learn/intro","path":"/learn/intro","sidebar":"tutorialSidebar"},{"id":"learn/security","path":"/learn/security","sidebar":"tutorialSidebar"},{"id":"participate/community/resources","path":"/participate/community/resources","sidebar":"tutorialSidebar"},{"id":"participate/community/tools","path":"/participate/community/tools","sidebar":"tutorialSidebar"},{"id":"participate/contribute/code-of-conduct","path":"/participate/contribute/code-of-conduct","sidebar":"tutorialSidebar"},{"id":"participate/contribute/intro","path":"/participate/contribute/intro","sidebar":"tutorialSidebar"},{"id":"participate/contribute/translate","path":"/participate/contribute/translate","sidebar":"tutorialSidebar"},{"id":"/wallets","path":"/wallets","sidebar":"tutorialSidebar"},{"id":"/category/farming","path":"/category/farming","sidebar":"tutorialSidebar"},{"id":"farming/guides","path":"/farming/guides","sidebar":"tutorialSidebar"},{"id":"develop/auto-sdk","path":"/develop/auto-sdk","sidebar":"tutorialSidebar"},{"id":"develop/nova","path":"/develop/nova","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/learn/intro","label":"learn/intro"}}}}],"breadcrumbs":true}},"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-06691C376E"],"anonymizeIP":false,"id":"default"}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["ar","de","en","fr","id","it","ja","uk","zh","pl","pt","ru","vi","es","tr"],"path":"i18n","currentLocale":"en","localeConfigs":{"ar":{"label":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","direction":"rtl","htmlLang":"ar","calendar":"gregory","path":"ar"},"de":{"label":"Deutsch","direction":"ltr","htmlLang":"de","calendar":"gregory","path":"de"},"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"},"fr":{"label":"Fran\xe7ais","direction":"ltr","htmlLang":"fr","calendar":"gregory","path":"fr"},"id":{"label":"Indonesia","direction":"ltr","htmlLang":"id","calendar":"gregory","path":"id"},"it":{"label":"Italiano","direction":"ltr","htmlLang":"it","calendar":"gregory","path":"it"},"ja":{"label":"\u65e5\u672c\u8a9e","direction":"ltr","htmlLang":"ja","calendar":"gregory","path":"ja"},"uk":{"label":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430","direction":"ltr","htmlLang":"uk","calendar":"gregory","path":"uk"},"zh":{"label":"\u4e2d\u6587","direction":"ltr","htmlLang":"zh","calendar":"gregory","path":"zh"},"pl":{"label":"Polski","direction":"ltr","htmlLang":"pl","calendar":"gregory","path":"pl"},"pt":{"label":"Portugu\xeas","direction":"ltr","htmlLang":"pt","calendar":"gregory","path":"pt"},"ru":{"label":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","direction":"ltr","htmlLang":"ru","calendar":"gregory","path":"ru"},"vi":{"label":"Ti\u1ebfng Vi\u1ec7t","direction":"ltr","htmlLang":"vi","calendar":"gregory","path":"vi"},"es":{"label":"Espa\xf1ol","direction":"ltr","htmlLang":"es","calendar":"gregory","path":"es"},"tr":{"label":"T\xfcrk\xe7e","direction":"ltr","htmlLang":"tr","calendar":"gregory","path":"tr"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.5.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.5.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.5.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.5.2"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"3.5.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.5.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.5.2"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.5.2"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.5.2"}}}');var c=n(4848);const u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(2514),s=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,u.hH)(),_=(0,c.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>E.current));const C=p||f;const T=(0,l.A)(C),A=C?.replace("pathname://","");let L=void 0!==A?(P=A,b&&(e=>e.startsWith("/"))(P)?S(P):P):void 0;var P;"hash"===x&&L?.startsWith("./")&&(L=L?.slice(1)),L&&T&&(L=(0,o.Ks)(L,{trailingSlash:w,baseUrl:k}));const j=(0,r.useRef)(!1),N=n?a.k2:a.N_,O=s.A.canUseIntersectionObserver,R=(0,r.useRef)(),I=()=>{j.current||null==L||(window.docusaurus.preload(L),j.current=!0)};(0,r.useEffect)((()=>(!O&&T&&s.A.canUseDOM&&null!=L&&window.docusaurus.prefetch(L),()=>{O&&R.current&&R.current.disconnect()})),[R,L,O,T]);const M=L?.startsWith("#")??!1,F=!y.target||"_self"===y.target,D=!L||!T||!F||M&&"hash"!==x;h||!M&&D||_.collectLink(L),y.id&&_.collectAnchor(y.id);const B={};return D?(0,d.jsx)("a",{ref:E,href:L,...C&&!T&&{target:"_blank",rel:"noopener noreferrer"},...y,...B}):(0,d.jsx)(N,{...y,onMouseEnter:I,onTouchStart:I,innerRef:e=>{E.current=e,O&&e&&T&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))}))})),R.current.observe(e))},to:L,...n&&{isActive:g,activeClassName:m},...B})}const f=r.forwardRef(p)},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},3886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>h,XK:()=>v,g1:()=>y});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(679),s=n(9532),c=n(4848);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,l.Wf)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,l.Wf)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,l.Wf)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,c.jsx)(f.Provider,{value:n,children:t})}function h(e){let{children:t}=e;return(0,c.jsx)(g,{children:t})}function b(){const e=(0,r.useContext)(f);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function v(){const e=(0,a.Gy)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},2565:(e,t,n)=>{"use strict";n.d(t,{k:()=>o,v:()=>i});var r=n(4070),a=n(3886);function o(e,t){return`docs-${e}-${t}`}function i(){const e=(0,r.Gy)(),t=(0,r.gk)(),n=(0,a.XK)();return[...Object.keys(e).map((function(r){const a=t?.activePlugin.pluginId===r?t.activeVersion:void 0,i=n[r],l=e[r].versions.find((e=>e.isLast));return o(r,(a??i??l).name)}))]}},609:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},6972:(e,t,n)=>{"use strict";n.d(t,{$S:()=>m,B5:()=>E,Nr:()=>f,OF:()=>k,QB:()=>_,Vd:()=>x,Y:()=>v,cC:()=>p,d1:()=>C,fW:()=>S,w8:()=>b});var r=n(6540),a=n(6347),o=n(2831),i=n(4070),l=n(9169),s=n(1682),c=n(3886),u=n(3025),d=n(609);function p(e){const t=(0,u.r)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}function m(){const{pathname:e}=(0,a.zy)(),t=(0,d.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,l.ys)(e,t),h=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||h(e.items,t))}function y(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function v(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function w(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,l.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,l.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function k(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function x(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,c.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,s.sb)([t,n,a].filter(Boolean))),[t,n,a])}function S(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function _(e,t){const n=x(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,s.sb)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,u.r)(),i=t.routes,l=i.find((e=>(0,a.B6)(n.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?r.docsSidebars[s]:void 0;return{docElement:(0,o.v)(i),sidebarName:s,sidebarItems:c}}function C(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!f(e)))}},3025:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>b,vT:()=>f,gk:()=>m,Gy:()=>d,HW:()=>y,ht:()=>p,r7:()=>h,jh:()=>g});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){return[...e.versions].sort(((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0)).find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=s(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.zy)();if(!t)return;return{activePlugin:t,activeVersion:s(t.pluginData,n)}}function g(e){return p(e).versions}function h(e){const t=p(e);return l(t)}function b(e){const t=p(e),{pathname:n}=(0,r.zy)();return c(t,n)}function y(e){const t=p(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},1911:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("set","page_path",t.pathname+t.search+t.hash),window.gtag("event","page_view")}))}}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(4876),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(7521)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8215),a=n(1312),o=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(4848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},2514:(e,t,n)=>{"use strict";n.d(t,{A:()=>It});var r=n(6540),a=n(8215),o=n(7489),i=n(1003),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),b=n(4090);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:y.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:a,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.A)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),o&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var L=n(2069),P=n(3104);var j=n(9532),N=n(5600);const O=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,L.M)(),t=(0,N.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,j.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,u.jsx)(O.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function M(){const e=(0,r.useContext)(O);if(!e)throw new j.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=M();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var D=n(5293),B=n(2303);function z(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function V(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,B.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,u.jsx)(z,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(V),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function q(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,D.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(3465);function K(){return(0,u.jsx)(G.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(K,{}),(0,u.jsx)(q,{className:"margin-right--md"}),(0,u.jsx)(Y,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...c}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(te.A,{...l&&{width:12,height:12}})]})};return a?(0,u.jsx)(Z.A,{href:s?f:a,...c,...g}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,u.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,u.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,u.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:l.children??l.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ge,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,a.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ge,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var be=n(961);function ye(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ve=n(9188),we=["translations"];function ke(){return ke=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var Ee="Ctrl";var Ce=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=_e(e,we),i=a.buttonText,l=void 0===i?"Search":i,s=a.buttonAriaLabel,c=void 0===s?"Search":s,u=xe((0,r.useState)(null),2),d=u[0],p=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(Ee))}),[]),r.createElement("button",ke({type:"button",className:"DocSearch DocSearch-Button","aria-label":c},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ve.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement(Te,{reactsToKey:d===Ee?Ee:"Meta"},d===Ee?r.createElement(ye,null):d),r.createElement(Te,{reactsToKey:"k"},"K"))))}));function Te(e){var t=e.reactsToKey,n=e.children,a=xe((0,r.useState)(!1),2),o=a[0],i=a[1];return(0,r.useEffect)((function(){if(t)return window.addEventListener("keydown",e),window.addEventListener("keyup",n),function(){window.removeEventListener("keydown",e),window.removeEventListener("keyup",n)};function e(e){e.key===t&&i(!0)}function n(e){e.key!==t&&"Meta"!==e.key||i(!1)}}),[t]),r.createElement("kbd",{className:o?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},n)}var Ae=n(5260);const Le="q";function Pe(){const{withBaseUrl:e}=(0,X.hH)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=function(){const{siteConfig:{themeConfig:e}}=(0,se.A)();return e}();return(0,r.useCallback)((r=>{const a=new URL(r);if(ee(t,a.href))return r;const o=`${a.pathname+a.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(o,n))}),[e,t,n])}var je=n(2967),Ne=n(2565);function Oe(){return[`language:${(0,se.A)().i18n.currentLocale}`,function(){const e=(0,Ne.v)();return[je.C,...e]}().map((e=>`docusaurus_tag:${e}`))]}const Re={button:{buttonText:(0,s.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,s.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,s.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,s.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,s.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,s.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,s.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,s.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,s.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,s.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,s.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,s.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,s.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,s.T)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,s.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,s.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,s.T)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,s.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,s.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,s.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,s.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,s.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,s.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,s.T)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,s.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,s.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,s.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Ie=null;function Me(e){let{hit:t,children:n}=e;return(0,u.jsx)(Z.A,{to:t.url,children:n})}function Fe(e){let{state:t,onClose:n}=e;const a=function(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,se.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${Le}=${encodeURIComponent(t)}`),[e,n])}();return(0,u.jsx)(Z.A,{to:a(t.query),onClick:n,children:(0,u.jsx)(s.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function De(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,se.A)(),s=Pe(),c=Oe(),d=o.searchParameters?.facetFilters??[],p=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,d):d,f={...o.searchParameters,facetFilters:p},m=(0,l.W6)(),g=(0,r.useRef)(null),h=(0,r.useRef)(null),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(void 0),k=(0,r.useCallback)((()=>Ie?Promise.resolve():Promise.all([n.e(9462).then(n.bind(n,9462)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,8913)),Promise.all([n.e(1869),n.e(5049)]).then(n.bind(n,5049))]).then((e=>{let[{DocSearchModal:t}]=e;Ie=t}))),[]),x=(0,r.useCallback)((()=>{if(!g.current){const e=document.createElement("div");g.current=e,document.body.insertBefore(e,document.body.firstChild)}}),[]),S=(0,r.useCallback)((()=>{x(),k().then((()=>y(!0)))}),[k,x]),_=(0,r.useCallback)((()=>{y(!1),h.current?.focus()}),[]),E=(0,r.useCallback)((e=>{"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),w(e.key),S())}),[S]),C=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;ee(a,t)?window.location.href=t:m.push(t)}}).current,T=(0,r.useRef)((e=>o.transformItems?o.transformItems(e):e.map((e=>({...e,url:s(e.url)}))))).current,A=(0,r.useMemo)((()=>e=>(0,u.jsx)(Fe,{...e,onClose:_})),[_]),L=(0,r.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:b,onOpen:S,onClose:_,onInput:E,searchButtonRef:h}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ae.A,{children:(0,u.jsx)("link",{rel:"preconnect",href:`https://${o.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})}),(0,u.jsx)(Ce,{onTouchStart:k,onFocus:k,onMouseOver:k,onClick:S,ref:h,translations:Re.button}),b&&Ie&&g.current&&(0,be.createPortal)((0,u.jsx)(Ie,{onClose:_,initialScrollY:window.scrollY,initialQuery:v,navigator:C,transformItems:T,hitComponent:Me,transformSearchClient:L,...o.searchPagePath&&{resultsFooterComponent:A},...o,searchParameters:f,placeholder:Re.placeholder,translations:Re.modal}),g.current)]})}function Be(){const{siteConfig:e}=(0,se.A)();return(0,u.jsx)(De,{...e.themeConfig.algolia})}const ze={navbarSearchContainer:"navbarSearchContainer_Bca1"};function $e(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,a.A)(n,ze.navbarSearchContainer),children:t})}var Ue=n(4070),Ve=n(6972);var He=n(3886);function We(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find((t=>t.id===e.mainDocId))}(e)}const qe={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...o,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)($e,{className:n,children:(0,u.jsx)(Be,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,u.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Ue.zK)(r),i=(0,Ve.QB)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,Ue.zK)(r),i=(0,Ve.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,Ve.Vd)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,u.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:c,hash:d}=(0,l.zy)(),p=(0,Ue.zK)(n),f=(0,Ue.jh)(n),{savePreferredVersionName:m}=(0,He.g1)(n),g=[...a,...f.map((function(e){const t=We(e,p);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,Ve.Vd)(n)[0],b=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,y=t&&g.length>1?void 0:We(h,p).path;return g.length<=1?(0,u.jsx)(oe,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:b,to:y,items:g,isActive:r?()=>!1:void 0})}};function Ge(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=qe[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(a,{...n})}function Ke(){const e=(0,L.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ge,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ye(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Qe(){const e=0===(0,w.p)().navbar.items.length,t=M();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ye,{onClick:()=>t.hide()}),t.content]})}function Ze(){const e=(0,L.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(F,{header:(0,u.jsx)(Q,{}),primaryMenu:(0,u.jsx)(Ke,{}),secondaryMenu:(0,u.jsx)(Qe,{})}):null}const Xe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Je(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function et(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,L.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,P.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[Xe.navbarHideable,!d&&Xe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Je,{onClick:i.toggle}),(0,u.jsx)(Ze,{})]})}var tt=n(440);const nt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function rt(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function at(e){let{error:t}=e;const n=(0,tt.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:nt.errorBoundaryError,children:n})}class ot extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const it="right";function lt(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function st(){const{toggle:e,shown:t}=(0,L.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(lt,{})})}const ct={colorModeToggle:"colorModeToggle_DEke"};function ut(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(ot,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Ge,{...e})},t)))})}function dt(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function pt(){const e=(0,L.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??it)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(dt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(st,{}),(0,u.jsx)(K,{}),(0,u.jsx)(ut,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ut,{items:r}),(0,u.jsx)(q,{className:ct.colorModeToggle}),!a&&(0,u.jsx)($e,{children:(0,u.jsx)(Be,{})})]})})}function ft(){return(0,u.jsx)(et,{children:(0,u.jsx)(pt,{})})}function mt(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function gt(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(mt,{item:t})},t.href??t.to)}function ht(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(gt,{item:e},t)))})]})}function bt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(ht,{column:e},t)))})}function yt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function vt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(mt,{item:t})}function wt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(vt,{item:e}),t.length!==n+1&&(0,u.jsx)(yt,{})]},n)))})})}function kt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(bt,{columns:t}):(0,u.jsx)(wt,{links:t})}var xt=n(1122);const St={footerLogoLink:"footerLogoLink_BH7S"};function _t(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(xt.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function Et(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:St.footerLogoLink,target:t.target,children:(0,u.jsx)(_t,{logo:t})}):(0,u.jsx)(_t,{logo:t})}function Ct(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Tt(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,u.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function At(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(Tt,{style:a,links:n&&n.length>0&&(0,u.jsx)(kt,{links:n}),logo:r&&(0,u.jsx)(Et,{logo:r}),copyright:t&&(0,u.jsx)(Ct,{copyright:t})})}const Lt=r.memo(At),Pt=(0,j.fM)([D.a,k.o,P.Tv,He.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(N.y_,{children:(0,u.jsx)(L.e,{children:(0,u.jsx)(R,{children:t})})})}]);function jt(e){let{children:t}=e;return(0,u.jsx)(Pt,{children:t})}var Nt=n(1107);function Ot(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Nt.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(rt,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(at,{error:t})})]})})})}const Rt={mainWrapper:"mainWrapper_z2l0"};function It(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,b.J)(),(0,u.jsxs)(jt,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(A,{}),(0,u.jsx)(ft,{}),(0,u.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,Rt.mainWrapper,r),children:(0,u.jsx)(o.A,{fallback:e=>(0,u.jsx)(Ot,{...e}),children:t})}),!n&&(0,u.jsx)(Lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),l=n(1122),s=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,a.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:g,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),a=n(5066),o=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,o.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function u(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(c,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(6540),a=n(8193),o=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function c(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?u:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,c]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&c(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function b(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),a=n(2303),o=n(679),i=n(9532),l=n(6342),s=n(4848);const c=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>h});var r=n(6540),a=n(8193),o=n(9532),i=n(679),l=n(6342),s=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function p(e){let{children:t}=e;const n=d();return(0,c.jsx)(u.Provider,{value:n,children:t})}function f(){const e=r.useContext(u);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>s});var r=n(6540),a=n(6347),o=n(9532);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function s(e){return l((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},1682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>a})},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),a=n(5066),o=n(5260),i=n(3102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),c=n(4586);var u=n(4848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,c.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.A,{children:[t&&(0,u.jsx)("title",{children:l}),t&&(0,u.jsx)("meta",{property:"og:title",content:l}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.A)(i,t);return(0,u.jsxs)(p.Provider,{value:l,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,a.A)(r,o),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>g});var r=n(6540),a=n(8193),o=n(2303),i=n(205),l=n(9532),s=n(4848);const c=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(c);if(null==e)throw new l.dV("ScrollControllerProvider");return e}const p=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,l._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function g(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{C:()=>r});const r="default"},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(6540);const a=JSON.parse('{"N":"localStorage","M":""}'),o=a.N;function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${a.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=l(t?.persistence);return null===r?c:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,a.zy)(),c=(0,o.Ks)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,c=n,c?a(s):o(s));var s,c;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>C,yJ:()=>f,sC:()=>A,AO:()=>p});var r=n(9668);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},824:()=>{Prism.languages.ini={comment:{pattern:/(^[ \f\t\v]*)[#;][^\n\r]*/m,lookbehind:!0},section:{pattern:/(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,lookbehind:!0,inside:{"section-name":{pattern:/(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,lookbehind:!0,alias:"selector"},punctuation:/\[|\]/}},key:{pattern:/(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,lookbehind:!0,alias:"attr-name"},value:{pattern:/(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,lookbehind:!0,alias:"attr-value",inside:{"inner-value":{pattern:/^("|').+(?=\1$)/,lookbehind:!0}}},punctuation:/=/}},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];g&&y.push.apply(y,i([g])),y.push(h),b&&y.push.apply(y,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},905:()=>{!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}}(Prism)},61:()=>{!function(e){var t=[/"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,/'[^']*'/.source,/\$'(?:[^'\\]|\\[\s\S])*'/.source,/<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source].join("|");e.languages["shell-session"]={command:{pattern:RegExp(/^/.source+"(?:"+/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source+"|"+/[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source+")?"+/[$#%](?=\s)/.source+/(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g,(function(){return t})),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:e.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},e.languages["sh-session"]=e.languages.shellsession=e.languages["shell-session"]}(Prism)},132:()=>{!function(e){var t=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function n(e){return e.replace(/__/g,(function(){return t}))}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(n(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}}(Prism)},7521:(e,t,n)=>{var r={"./prism-ini":824,"./prism-powershell":905,"./prism-shell-session":61,"./prism-toml":132};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=7521},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/de/farming/advanced-cli/taurus/index.html b/de/farming/advanced-cli/taurus/index.html index 8232aca05ed..f36cfd6e381 100644 --- a/de/farming/advanced-cli/taurus/index.html +++ b/de/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/advanced-cli/tips/index.html b/de/farming/advanced-cli/tips/index.html index fe8728269b4..8ff01492ea0 100644 --- a/de/farming/advanced-cli/tips/index.html +++ b/de/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/common-problems/index.html b/de/farming/common-problems/index.html index 0d7b99fc667..faa5822d743 100644 --- a/de/farming/common-problems/index.html +++ b/de/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/de/farming/guides/gpu-plotter/index.html b/de/farming/guides/gpu-plotter/index.html index 56be3a61a05..cc1d21e476a 100644 --- a/de/farming/guides/gpu-plotter/index.html +++ b/de/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/grafana-dashboard/index.html b/de/farming/guides/grafana-dashboard/index.html index 02cddabe765..e4391f328f8 100644 --- a/de/farming/guides/grafana-dashboard/index.html +++ b/de/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/index.html b/de/farming/guides/index.html index f916e4d5abb..d9dbfaa8fd4 100644 --- a/de/farming/guides/index.html +++ b/de/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/port-config/index.html b/de/farming/guides/port-config/index.html index 3610367e763..b480acce36b 100644 --- a/de/farming/guides/port-config/index.html +++ b/de/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/verified-farmer/index.html b/de/farming/guides/verified-farmer/index.html index d825cdbafe4..4db8221d6e2 100644 --- a/de/farming/guides/verified-farmer/index.html +++ b/de/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/intro/index.html b/de/farming/intro/index.html index 0cf3dc815e8..32cd2a29af4 100644 --- a/de/farming/intro/index.html +++ b/de/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/space-acres/install/index.html b/de/farming/space-acres/install/index.html index 7ecdaa284e8..b6c5f09ea91 100644 --- a/de/farming/space-acres/install/index.html +++ b/de/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/space-acres/translate/index.html b/de/farming/space-acres/translate/index.html index 80dd308d55a..d6e4bf8be7f 100644 --- a/de/farming/space-acres/translate/index.html +++ b/de/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/timekeeper/index.html b/de/farming/timekeeper/index.html index 88e0ec49d7d..6da76433dfb 100644 --- a/de/farming/timekeeper/index.html +++ b/de/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/index.html b/de/index.html index ee0cc9d7454..6aa09410b11 100644 --- a/de/index.html +++ b/de/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/academy/index.html b/de/learn/academy/index.html index 605f05872d4..a793fc10dd8 100644 --- a/de/learn/academy/index.html +++ b/de/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/intro/index.html b/de/learn/intro/index.html index a75b3b95946..223fa713c3d 100644 --- a/de/learn/intro/index.html +++ b/de/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/security/index.html b/de/learn/security/index.html index d65c5fea0bb..fae46dac1fd 100644 --- a/de/learn/security/index.html +++ b/de/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/markdown-page/index.html b/de/markdown-page/index.html index 8ae5033776a..1a2a8cfc144 100644 --- a/de/markdown-page/index.html +++ b/de/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/community/resources/index.html b/de/participate/community/resources/index.html index 357dcfe2e6f..c6978729e15 100644 --- a/de/participate/community/resources/index.html +++ b/de/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/community/tools/index.html b/de/participate/community/tools/index.html index 50a8415fd42..1df595d138d 100644 --- a/de/participate/community/tools/index.html +++ b/de/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/code-of-conduct/index.html b/de/participate/contribute/code-of-conduct/index.html index 7657045fae3..bfed7e01ef1 100644 --- a/de/participate/contribute/code-of-conduct/index.html +++ b/de/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/intro/index.html b/de/participate/contribute/intro/index.html index 2de2a60ec28..da8bb79427e 100644 --- a/de/participate/contribute/intro/index.html +++ b/de/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/translate/index.html b/de/participate/contribute/translate/index.html index b0ce6083a28..5e064cda230 100644 --- a/de/participate/contribute/translate/index.html +++ b/de/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/intro/index.html b/de/staking/intro/index.html index 0e707926228..31ecc8d3be0 100644 --- a/de/staking/intro/index.html +++ b/de/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/operator/deregister/index.html b/de/staking/operator/deregister/index.html index c58214cd76f..b3f4b08f10c 100644 --- a/de/staking/operator/deregister/index.html +++ b/de/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/operator/register/index.html b/de/staking/operator/register/index.html index 804bfc8b31f..4387cab4c58 100644 --- a/de/staking/operator/register/index.html +++ b/de/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/de/staking/operator/tips/index.html b/de/staking/operator/tips/index.html index f9adc591b2e..941da93aa05 100644 --- a/de/staking/operator/tips/index.html +++ b/de/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/stake/index.html b/de/staking/stake/index.html index cad48681f7e..33907684927 100644 --- a/de/staking/stake/index.html +++ b/de/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/wallets/index.html b/de/wallets/index.html index a201dde27b2..0b3ef925fae 100644 --- a/de/wallets/index.html +++ b/de/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/wallets/polkadot/index.html b/de/wallets/polkadot/index.html index 0b42337e201..78d929cdb42 100644 --- a/de/wallets/polkadot/index.html +++ b/de/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/wallets/subwallet/index.html b/de/wallets/subwallet/index.html index 1235cd50d6f..9a652dd722a 100644 --- a/de/wallets/subwallet/index.html +++ b/de/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/auto-id/index.html b/develop/auto-sdk/auto-id/index.html index c65f194f7f6..d97c8799e14 100644 --- a/develop/auto-sdk/auto-id/index.html +++ b/develop/auto-sdk/auto-id/index.html @@ -12,8 +12,8 @@ - - + +

    Auto ID

    Auto-ID Package Documentation

    diff --git a/develop/auto-sdk/consensus/index.html b/develop/auto-sdk/consensus/index.html index 221c623579a..6bd88fceb7f 100644 --- a/develop/auto-sdk/consensus/index.html +++ b/develop/auto-sdk/consensus/index.html @@ -12,8 +12,8 @@ - - + +

    Consensus

    Auto-Consensus Package Documentation

    diff --git a/develop/auto-sdk/drive/index.html b/develop/auto-sdk/drive/index.html index 7f6aaf67ea3..f5f18640439 100644 --- a/develop/auto-sdk/drive/index.html +++ b/develop/auto-sdk/drive/index.html @@ -12,8 +12,8 @@ - - + +

    Drive

    Auto-Drive Package Documentation

    diff --git a/develop/auto-sdk/index.html b/develop/auto-sdk/index.html index b47bff339ff..e5af5280821 100644 --- a/develop/auto-sdk/index.html +++ b/develop/auto-sdk/index.html @@ -12,8 +12,8 @@ - - + +
    diff --git a/develop/auto-sdk/intro/index.html b/develop/auto-sdk/intro/index.html index 4fd41a60eb8..ae72a485ca9 100644 --- a/develop/auto-sdk/intro/index.html +++ b/develop/auto-sdk/intro/index.html @@ -12,8 +12,8 @@ - - + +

    Introduction

    Introduction to the Auto SDK

    diff --git a/develop/auto-sdk/utils/index.html b/develop/auto-sdk/utils/index.html index 54dc0364cc8..4661fc27609 100644 --- a/develop/auto-sdk/utils/index.html +++ b/develop/auto-sdk/utils/index.html @@ -12,8 +12,8 @@ - - + +

    Utils

    Auto-Utils Package Documentation

    diff --git a/develop/auto-sdk/xdm/index.html b/develop/auto-sdk/xdm/index.html index ece7137703c..53af5089a21 100644 --- a/develop/auto-sdk/xdm/index.html +++ b/develop/auto-sdk/xdm/index.html @@ -12,8 +12,8 @@ - - + +

    XDM

    Cross-Domain Transfers

    diff --git a/develop/intro/index.html b/develop/intro/index.html index 241f6a8fa4e..4e5d2b7e63d 100644 --- a/develop/intro/index.html +++ b/develop/intro/index.html @@ -12,8 +12,8 @@ - - + +

    Getting Started

    Introduction

    diff --git a/develop/nova/block-explorer/index.html b/develop/nova/block-explorer/index.html index cf53b6ebe9a..740538ebe3b 100644 --- a/develop/nova/block-explorer/index.html +++ b/develop/nova/block-explorer/index.html @@ -12,8 +12,8 @@ - - + +

    Nova Block Explorer

    EVM Domain Nova Block Explorer

    diff --git a/develop/nova/faucet/index.html b/develop/nova/faucet/index.html index 409e4f7867a..25edb0c1b43 100644 --- a/develop/nova/faucet/index.html +++ b/develop/nova/faucet/index.html @@ -12,8 +12,8 @@ - - + +

    Autonomys Faucet

    How to get some test tokens

    diff --git a/develop/nova/general/index.html b/develop/nova/general/index.html index 3cf924d6cfc..680e76e726e 100644 --- a/develop/nova/general/index.html +++ b/develop/nova/general/index.html @@ -12,8 +12,8 @@ - - + +

    General Information

    What tools are available for developers?

    diff --git a/develop/nova/guides/foundry/index.html b/develop/nova/guides/foundry/index.html index 8d6baba6816..c703a76b90d 100644 --- a/develop/nova/guides/foundry/index.html +++ b/develop/nova/guides/foundry/index.html @@ -12,8 +12,8 @@ - - + +

    Foundry

    Testing and deploying smart contracts using Foundry

    diff --git a/develop/nova/guides/hardhat/index.html b/develop/nova/guides/hardhat/index.html index ae8d82ae00a..ee9dab05c19 100644 --- a/develop/nova/guides/hardhat/index.html +++ b/develop/nova/guides/hardhat/index.html @@ -12,8 +12,8 @@ - - + +

    Hardhat

    Hardhat testing and deployment

    diff --git a/develop/nova/guides/local-development/index.html b/develop/nova/guides/local-development/index.html index 0a6dcac1b40..53ee1847e23 100644 --- a/develop/nova/guides/local-development/index.html +++ b/develop/nova/guides/local-development/index.html @@ -12,8 +12,8 @@ - - + +

    Local Development

    Setting up a local development environment

    diff --git a/develop/nova/guides/remix/index.html b/develop/nova/guides/remix/index.html index 207414a3dcb..5cf30e2abae 100644 --- a/develop/nova/guides/remix/index.html +++ b/develop/nova/guides/remix/index.html @@ -12,8 +12,8 @@ - - + +

    Remix IDE

    Remix IDE guide

    diff --git a/develop/nova/index.html b/develop/nova/index.html index d1f9f822164..5b3b7941781 100644 --- a/develop/nova/index.html +++ b/develop/nova/index.html @@ -12,8 +12,8 @@ - - + + diff --git a/develop/nova/introduction/index.html b/develop/nova/introduction/index.html index 7d3d7555d61..249dce10adb 100644 --- a/develop/nova/introduction/index.html +++ b/develop/nova/introduction/index.html @@ -12,8 +12,8 @@ - - + +

    Introduction

    info

    Currently, Nova is available exclusively on the Gemini-3h network. It will soon be accessible on the new test network, Taurus.

    Nova's availability on the mainnet is planned for Phase 2 of the mainnet launch. For further details, please refer to our Phased Launch Roadmap post on the forum.

    diff --git a/develop/nova/metamask/index.html b/develop/nova/metamask/index.html index b473945faba..11230ecda7f 100644 --- a/develop/nova/metamask/index.html +++ b/develop/nova/metamask/index.html @@ -12,8 +12,8 @@ - - + +

    Setting up MetaMask

    Adding Autonomys RPC using MetaMask

    diff --git a/es/404.html b/es/404.html index f89c5493697..8f07b8278f6 100644 --- a/es/404.html +++ b/es/404.html @@ -12,7 +12,7 @@ - + diff --git a/es/assets/js/0cf4a869.c4bf1e42.js b/es/assets/js/0cf4a869.95c5f643.js similarity index 98% rename from es/assets/js/0cf4a869.c4bf1e42.js rename to es/assets/js/0cf4a869.95c5f643.js index a164114cf44..09b6f30e635 100644 --- a/es/assets/js/0cf4a869.c4bf1e42.js +++ b/es/assets/js/0cf4a869.95c5f643.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1834],{1424:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/es/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/es/staking/intro"},next:{title:"Deregister an Operator",permalink:"/es/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1834],{1424:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/es/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/es/staking/intro"},next:{title:"Deregister an Operator",permalink:"/es/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/es/assets/js/8673bc52.022668dd.js b/es/assets/js/8673bc52.f0c39c3b.js similarity index 97% rename from es/assets/js/8673bc52.022668dd.js rename to es/assets/js/8673bc52.f0c39c3b.js index 66de485262b..fb3990d1aaa 100644 --- a/es/assets/js/8673bc52.022668dd.js +++ b/es/assets/js/8673bc52.f0c39c3b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[151],{381:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Advertencia","Problemas","Incidencias"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/es/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Advertencia","Problemas","Incidencias"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/es/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/es/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[151],{381:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Advertencia","Problemas","Incidencias"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/es/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Advertencia","Problemas","Incidencias"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/es/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/es/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/es/assets/js/f61ba1c9.eda3d230.js b/es/assets/js/f61ba1c9.14453ad4.js similarity index 96% rename from es/assets/js/f61ba1c9.eda3d230.js rename to es/assets/js/f61ba1c9.14453ad4.js index 260e61b66ea..15e873fd4f5 100644 --- a/es/assets/js/f61ba1c9.eda3d230.js +++ b/es/assets/js/f61ba1c9.14453ad4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3784],{538:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binarios","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/es/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binarios","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Gu\xeda de traducci\xf3n",permalink:"/es/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/es/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3784],{538:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binarios","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/es/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binarios","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Gu\xeda de traducci\xf3n",permalink:"/es/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/es/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/es/assets/js/runtime~main.02a95dc2.js b/es/assets/js/runtime~main.452b1191.js similarity index 96% rename from es/assets/js/runtime~main.02a95dc2.js rename to es/assets/js/runtime~main.452b1191.js index b4e5af3eec4..f1189458c92 100644 --- a/es/assets/js/runtime~main.02a95dc2.js +++ b/es/assets/js/runtime~main.452b1191.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,t,r,d={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var c=f[e]={exports:{}};return d[e].call(c.exports,c,c.exports,b),c.exports}b.m=d,e=[],b.O=(a,c,t,r)=>{if(!c){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};a=a||[null,c({}),c([]),c(c)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=c(f))Object.getOwnPropertyNames(f).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,b.d(r,d),r},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({151:"8673bc52",354:"00f359f0",453:"69d1cec5",705:"c462c969",1049:"2ad40984",1101:"9a0a479a",1235:"a7456010",1236:"2626b04e",1562:"dee35a86",1747:"90322a14",1834:"0cf4a869",1958:"c4815b57",1963:"55975728",2591:"287eca59",2623:"43fda204",2729:"1e19a9ce",3146:"4971eec7",3770:"b29a6e93",3784:"f61ba1c9",4134:"393be207",4137:"0973a9ba",4206:"858a1305",4583:"1df93b7f",4682:"8f5a5419",4719:"a743f7aa",4755:"eb999967",4789:"06da9c4e",4881:"051fd316",4962:"7c1b9360",5158:"cd6dc502",5193:"d3687662",5305:"bc17cc8a",5609:"ba05495b",5742:"aba21aa0",5994:"e1ce9707",6061:"1f391b9e",6644:"edc41ec2",6698:"b9670199",6910:"7af9d8bd",6969:"14eb3368",7098:"a7bd4aaa",7497:"464c79c6",7650:"ed0df58e",7821:"27ee2ba6",7833:"3ae4d31e",8294:"71b16b82",8372:"6fa92b38",8401:"17896441",8553:"928251f1",8652:"dc86c7ac",8721:"1b9d0a9f",8956:"96eb2e13",9004:"52552acb",9048:"a94703ab",9167:"22486033",9229:"b263f823",9468:"fc1d78ac",9647:"5e95c892",9898:"0e4d2c1f",9907:"96a64c65"}[e]||e)+"."+{151:"022668dd",354:"f24acbc5",453:"f95cc09d",705:"a2893557",1049:"9b627d47",1101:"c1868dbd",1235:"deb810c9",1236:"b9a930c2",1562:"42435ddb",1688:"433c2b5b",1747:"d7b413aa",1834:"c4bf1e42",1958:"2361128b",1963:"8a4d1b03",2237:"c851d8b1",2440:"ecd0621f",2591:"2d936aef",2623:"f5f4bc28",2729:"6c7f7c1d",3146:"93ccdb29",3770:"4c285e4d",3784:"eda3d230",4134:"cf8a1b61",4137:"d8c3d12c",4206:"68fdfd02",4324:"b14b8aad",4583:"c0d080f8",4682:"17f2500b",4719:"78fda0c7",4755:"59f1f2ec",4789:"a2decb43",4881:"0fef422a",4962:"9b0a008c",5049:"7f13b97c",5158:"e76d7038",5193:"6564e4bf",5305:"e62f57bf",5394:"83d77ce3",5609:"70cac65c",5742:"08d6695f",5994:"e92fbe8f",6061:"fc18f174",6644:"caaaf390",6688:"86f0bb7d",6698:"6ed0062f",6910:"47430490",6969:"fa836339",7098:"c4e87eeb",7497:"c8932db7",7650:"6c1e2407",7821:"87a746c8",7833:"20298213",8294:"d36b2dec",8372:"914c6e73",8401:"d04d0920",8553:"eeac5dac",8652:"b044b2b0",8721:"164bcfbf",8913:"0680f2c1",8956:"33263f2e",9004:"5b293650",9048:"5d6981a0",9167:"da0cdded",9229:"80334313",9462:"be2eb63e",9468:"f3e786ab",9647:"e4c313e0",9898:"7f5cab57",9907:"1e2aa7db"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,c,d)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/es/",b.gca=function(e){return e={17896441:"8401",22486033:"9167",55975728:"1963","8673bc52":"151","00f359f0":"354","69d1cec5":"453",c462c969:"705","2ad40984":"1049","9a0a479a":"1101",a7456010:"1235","2626b04e":"1236",dee35a86:"1562","90322a14":"1747","0cf4a869":"1834",c4815b57:"1958","287eca59":"2591","43fda204":"2623","1e19a9ce":"2729","4971eec7":"3146",b29a6e93:"3770",f61ba1c9:"3784","393be207":"4134","0973a9ba":"4137","858a1305":"4206","1df93b7f":"4583","8f5a5419":"4682",a743f7aa:"4719",eb999967:"4755","06da9c4e":"4789","051fd316":"4881","7c1b9360":"4962",cd6dc502:"5158",d3687662:"5193",bc17cc8a:"5305",ba05495b:"5609",aba21aa0:"5742",e1ce9707:"5994","1f391b9e":"6061",edc41ec2:"6644",b9670199:"6698","7af9d8bd":"6910","14eb3368":"6969",a7bd4aaa:"7098","464c79c6":"7497",ed0df58e:"7650","27ee2ba6":"7821","3ae4d31e":"7833","71b16b82":"8294","6fa92b38":"8372","928251f1":"8553",dc86c7ac:"8652","1b9d0a9f":"8721","96eb2e13":"8956","52552acb":"9004",a94703ab:"9048",b263f823:"9229",fc1d78ac:"9468","5e95c892":"9647","0e4d2c1f":"9898","96a64c65":"9907"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var d=b.p+b.u(a),f=new Error;b.l(d,(c=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",f.name="ChunkLoadError",f.type=r,f.request=d,t[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,d=c[0],f=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(c);n{"use strict";var e,a,c,t,r,d={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var c=f[e]={exports:{}};return d[e].call(c.exports,c,c.exports,b),c.exports}b.m=d,e=[],b.O=(a,c,t,r)=>{if(!c){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};a=a||[null,c({}),c([]),c(c)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=c(f))Object.getOwnPropertyNames(f).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,b.d(r,d),r},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({151:"8673bc52",354:"00f359f0",453:"69d1cec5",705:"c462c969",1049:"2ad40984",1101:"9a0a479a",1235:"a7456010",1236:"2626b04e",1562:"dee35a86",1747:"90322a14",1834:"0cf4a869",1958:"c4815b57",1963:"55975728",2591:"287eca59",2623:"43fda204",2729:"1e19a9ce",3146:"4971eec7",3770:"b29a6e93",3784:"f61ba1c9",4134:"393be207",4137:"0973a9ba",4206:"858a1305",4583:"1df93b7f",4682:"8f5a5419",4719:"a743f7aa",4755:"eb999967",4789:"06da9c4e",4881:"051fd316",4962:"7c1b9360",5158:"cd6dc502",5193:"d3687662",5305:"bc17cc8a",5609:"ba05495b",5742:"aba21aa0",5994:"e1ce9707",6061:"1f391b9e",6644:"edc41ec2",6698:"b9670199",6910:"7af9d8bd",6969:"14eb3368",7098:"a7bd4aaa",7497:"464c79c6",7650:"ed0df58e",7821:"27ee2ba6",7833:"3ae4d31e",8294:"71b16b82",8372:"6fa92b38",8401:"17896441",8553:"928251f1",8652:"dc86c7ac",8721:"1b9d0a9f",8956:"96eb2e13",9004:"52552acb",9048:"a94703ab",9167:"22486033",9229:"b263f823",9468:"fc1d78ac",9647:"5e95c892",9898:"0e4d2c1f",9907:"96a64c65"}[e]||e)+"."+{151:"f0c39c3b",354:"f24acbc5",453:"f95cc09d",705:"a2893557",1049:"9b627d47",1101:"c1868dbd",1235:"deb810c9",1236:"b9a930c2",1562:"42435ddb",1688:"433c2b5b",1747:"d7b413aa",1834:"95c5f643",1958:"2361128b",1963:"8a4d1b03",2237:"c851d8b1",2440:"ecd0621f",2591:"2d936aef",2623:"f5f4bc28",2729:"6c7f7c1d",3146:"93ccdb29",3770:"4c285e4d",3784:"14453ad4",4134:"cf8a1b61",4137:"d8c3d12c",4206:"68fdfd02",4324:"b14b8aad",4583:"c0d080f8",4682:"17f2500b",4719:"78fda0c7",4755:"59f1f2ec",4789:"a2decb43",4881:"0fef422a",4962:"9b0a008c",5049:"7f13b97c",5158:"e76d7038",5193:"6564e4bf",5305:"e62f57bf",5394:"83d77ce3",5609:"70cac65c",5742:"08d6695f",5994:"e92fbe8f",6061:"fc18f174",6644:"caaaf390",6688:"86f0bb7d",6698:"6ed0062f",6910:"47430490",6969:"fa836339",7098:"c4e87eeb",7497:"c8932db7",7650:"6c1e2407",7821:"87a746c8",7833:"20298213",8294:"d36b2dec",8372:"914c6e73",8401:"d04d0920",8553:"eeac5dac",8652:"b044b2b0",8721:"164bcfbf",8913:"0680f2c1",8956:"33263f2e",9004:"5b293650",9048:"5d6981a0",9167:"da0cdded",9229:"80334313",9462:"be2eb63e",9468:"f3e786ab",9647:"e4c313e0",9898:"7f5cab57",9907:"1e2aa7db"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,c,d)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/es/",b.gca=function(e){return e={17896441:"8401",22486033:"9167",55975728:"1963","8673bc52":"151","00f359f0":"354","69d1cec5":"453",c462c969:"705","2ad40984":"1049","9a0a479a":"1101",a7456010:"1235","2626b04e":"1236",dee35a86:"1562","90322a14":"1747","0cf4a869":"1834",c4815b57:"1958","287eca59":"2591","43fda204":"2623","1e19a9ce":"2729","4971eec7":"3146",b29a6e93:"3770",f61ba1c9:"3784","393be207":"4134","0973a9ba":"4137","858a1305":"4206","1df93b7f":"4583","8f5a5419":"4682",a743f7aa:"4719",eb999967:"4755","06da9c4e":"4789","051fd316":"4881","7c1b9360":"4962",cd6dc502:"5158",d3687662:"5193",bc17cc8a:"5305",ba05495b:"5609",aba21aa0:"5742",e1ce9707:"5994","1f391b9e":"6061",edc41ec2:"6644",b9670199:"6698","7af9d8bd":"6910","14eb3368":"6969",a7bd4aaa:"7098","464c79c6":"7497",ed0df58e:"7650","27ee2ba6":"7821","3ae4d31e":"7833","71b16b82":"8294","6fa92b38":"8372","928251f1":"8553",dc86c7ac:"8652","1b9d0a9f":"8721","96eb2e13":"8956","52552acb":"9004",a94703ab:"9048",b263f823:"9229",fc1d78ac:"9468","5e95c892":"9647","0e4d2c1f":"9898","96a64c65":"9907"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var d=b.p+b.u(a),f=new Error;b.l(d,(c=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",f.name="ChunkLoadError",f.type=r,f.request=d,t[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,d=c[0],f=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(c);n - + diff --git a/es/develop/auto-sdk/auto-id/index.html b/es/develop/auto-sdk/auto-id/index.html index 611798d30dd..536d8873dc1 100644 --- a/es/develop/auto-sdk/auto-id/index.html +++ b/es/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/consensus/index.html b/es/develop/auto-sdk/consensus/index.html index 237807d30c0..c984672bcf9 100644 --- a/es/develop/auto-sdk/consensus/index.html +++ b/es/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/drive/index.html b/es/develop/auto-sdk/drive/index.html index 4b1fb43b2e1..dbf79f9f23b 100644 --- a/es/develop/auto-sdk/drive/index.html +++ b/es/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/index.html b/es/develop/auto-sdk/index.html index 47de31cd964..b311fd2868f 100644 --- a/es/develop/auto-sdk/index.html +++ b/es/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/intro/index.html b/es/develop/auto-sdk/intro/index.html index 1e713f35355..ee0a22bfe55 100644 --- a/es/develop/auto-sdk/intro/index.html +++ b/es/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/utils/index.html b/es/develop/auto-sdk/utils/index.html index 37b530ee899..a904005b900 100644 --- a/es/develop/auto-sdk/utils/index.html +++ b/es/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/xdm/index.html b/es/develop/auto-sdk/xdm/index.html index 1f77b3504e1..351237a66a4 100644 --- a/es/develop/auto-sdk/xdm/index.html +++ b/es/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/intro/index.html b/es/develop/intro/index.html index 97899470a1d..d07a28fb4ae 100644 --- a/es/develop/intro/index.html +++ b/es/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/block-explorer/index.html b/es/develop/nova/block-explorer/index.html index 54f8e70fb66..66f4200e100 100644 --- a/es/develop/nova/block-explorer/index.html +++ b/es/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/faucet/index.html b/es/develop/nova/faucet/index.html index 1c5178fb83f..f803da58193 100644 --- a/es/develop/nova/faucet/index.html +++ b/es/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/general/index.html b/es/develop/nova/general/index.html index c0e9757ed25..ba2a8d78d60 100644 --- a/es/develop/nova/general/index.html +++ b/es/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/foundry/index.html b/es/develop/nova/guides/foundry/index.html index 88ad7aa2f69..d803b1cd863 100644 --- a/es/develop/nova/guides/foundry/index.html +++ b/es/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/hardhat/index.html b/es/develop/nova/guides/hardhat/index.html index 393bae8fe03..bccd4bbee89 100644 --- a/es/develop/nova/guides/hardhat/index.html +++ b/es/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/local-development/index.html b/es/develop/nova/guides/local-development/index.html index 3c1499f89d3..d704dba8f47 100644 --- a/es/develop/nova/guides/local-development/index.html +++ b/es/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/remix/index.html b/es/develop/nova/guides/remix/index.html index 1cbdb3cb4a0..b5c16092293 100644 --- a/es/develop/nova/guides/remix/index.html +++ b/es/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/index.html b/es/develop/nova/index.html index 0e92cd196aa..8c9da848389 100644 --- a/es/develop/nova/index.html +++ b/es/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/introduction/index.html b/es/develop/nova/introduction/index.html index 2a95c9a3a48..3922a434344 100644 --- a/es/develop/nova/introduction/index.html +++ b/es/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/metamask/index.html b/es/develop/nova/metamask/index.html index fb70bc14064..f72ece22c74 100644 --- a/es/develop/nova/metamask/index.html +++ b/es/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/cluster/index.html b/es/farming/advanced-cli/cluster/index.html index 33eafae00ba..f2c0723763e 100644 --- a/es/farming/advanced-cli/cluster/index.html +++ b/es/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/install/index.html b/es/farming/advanced-cli/install/index.html index 853c45ae0ae..2b4f5883d0c 100644 --- a/es/farming/advanced-cli/install/index.html +++ b/es/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/es/farming/advanced-cli/taurus/index.html b/es/farming/advanced-cli/taurus/index.html index 9b123d977af..e31698888bd 100644 --- a/es/farming/advanced-cli/taurus/index.html +++ b/es/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/tips/index.html b/es/farming/advanced-cli/tips/index.html index 40d3a64d54f..b8b45953bde 100644 --- a/es/farming/advanced-cli/tips/index.html +++ b/es/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/common-problems/index.html b/es/farming/common-problems/index.html index 2469b9a8a16..2d819042cba 100644 --- a/es/farming/common-problems/index.html +++ b/es/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/es/farming/guides/gpu-plotter/index.html b/es/farming/guides/gpu-plotter/index.html index f3fe6b98ec1..6f45598d39f 100644 --- a/es/farming/guides/gpu-plotter/index.html +++ b/es/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/grafana-dashboard/index.html b/es/farming/guides/grafana-dashboard/index.html index dfce3233ad3..19c1cbca3f1 100644 --- a/es/farming/guides/grafana-dashboard/index.html +++ b/es/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/index.html b/es/farming/guides/index.html index 40f1253edbe..aaef54f195b 100644 --- a/es/farming/guides/index.html +++ b/es/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/port-config/index.html b/es/farming/guides/port-config/index.html index 8520cf05184..d096cb84be7 100644 --- a/es/farming/guides/port-config/index.html +++ b/es/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/verified-farmer/index.html b/es/farming/guides/verified-farmer/index.html index 818048a51fc..a2fa4a83d1d 100644 --- a/es/farming/guides/verified-farmer/index.html +++ b/es/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/intro/index.html b/es/farming/intro/index.html index 914e24b88ed..2dd816fc2ee 100644 --- a/es/farming/intro/index.html +++ b/es/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/space-acres/install/index.html b/es/farming/space-acres/install/index.html index 3c2f1b57c75..28ace2e9e17 100644 --- a/es/farming/space-acres/install/index.html +++ b/es/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/space-acres/translate/index.html b/es/farming/space-acres/translate/index.html index 907d45d6c96..2819d202465 100644 --- a/es/farming/space-acres/translate/index.html +++ b/es/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/timekeeper/index.html b/es/farming/timekeeper/index.html index b97ee7ed26d..4279f5ebb6b 100644 --- a/es/farming/timekeeper/index.html +++ b/es/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/index.html b/es/index.html index 5bfd2e3cddd..dcdf25a7062 100644 --- a/es/index.html +++ b/es/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/academy/index.html b/es/learn/academy/index.html index f1f78f540a0..27421dd9e73 100644 --- a/es/learn/academy/index.html +++ b/es/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/intro/index.html b/es/learn/intro/index.html index d78a5c85a9c..29e9a304026 100644 --- a/es/learn/intro/index.html +++ b/es/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/security/index.html b/es/learn/security/index.html index 0b2c440c2d2..181b194f579 100644 --- a/es/learn/security/index.html +++ b/es/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/markdown-page/index.html b/es/markdown-page/index.html index c2d301c3b95..952a78f861d 100644 --- a/es/markdown-page/index.html +++ b/es/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/community/resources/index.html b/es/participate/community/resources/index.html index a0767986eaa..c68beb4f638 100644 --- a/es/participate/community/resources/index.html +++ b/es/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/community/tools/index.html b/es/participate/community/tools/index.html index 593344dc3bc..5b60c990a12 100644 --- a/es/participate/community/tools/index.html +++ b/es/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/code-of-conduct/index.html b/es/participate/contribute/code-of-conduct/index.html index 580d16a2cf8..346fc8b21b4 100644 --- a/es/participate/contribute/code-of-conduct/index.html +++ b/es/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/intro/index.html b/es/participate/contribute/intro/index.html index 3688d33406c..da2f0ba0d98 100644 --- a/es/participate/contribute/intro/index.html +++ b/es/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/translate/index.html b/es/participate/contribute/translate/index.html index db492efa1cd..e3a33e5b1af 100644 --- a/es/participate/contribute/translate/index.html +++ b/es/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/intro/index.html b/es/staking/intro/index.html index dc5052903d3..7e3d1106d9d 100644 --- a/es/staking/intro/index.html +++ b/es/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/operator/deregister/index.html b/es/staking/operator/deregister/index.html index a0afebb29b2..05589a94a3a 100644 --- a/es/staking/operator/deregister/index.html +++ b/es/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/operator/register/index.html b/es/staking/operator/register/index.html index 4d31826ada6..5062daef29b 100644 --- a/es/staking/operator/register/index.html +++ b/es/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/es/staking/operator/tips/index.html b/es/staking/operator/tips/index.html index b7f7c7039ea..3d9e8d63063 100644 --- a/es/staking/operator/tips/index.html +++ b/es/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/stake/index.html b/es/staking/stake/index.html index d30eaf0d0e4..a4957c3785c 100644 --- a/es/staking/stake/index.html +++ b/es/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/wallets/index.html b/es/wallets/index.html index 44b5b398c04..46c48cc99db 100644 --- a/es/wallets/index.html +++ b/es/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/wallets/polkadot/index.html b/es/wallets/polkadot/index.html index a39e09a92dd..aed9ba996ff 100644 --- a/es/wallets/polkadot/index.html +++ b/es/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/wallets/subwallet/index.html b/es/wallets/subwallet/index.html index b865c349549..607add359a9 100644 --- a/es/wallets/subwallet/index.html +++ b/es/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/advanced-cli/cluster/index.html b/farming/advanced-cli/cluster/index.html index 078baea726f..30be3cb3ecb 100644 --- a/farming/advanced-cli/cluster/index.html +++ b/farming/advanced-cli/cluster/index.html @@ -12,8 +12,8 @@ - - + +

    Farming Cluster

    Farming Cluster

    diff --git a/farming/advanced-cli/install/index.html b/farming/advanced-cli/install/index.html index 16d05b1b9ec..c2185976c03 100644 --- a/farming/advanced-cli/install/index.html +++ b/farming/advanced-cli/install/index.html @@ -12,8 +12,8 @@ - - + +

    Install

    Multiple Versions Available
      @@ -30,9 +30,9 @@

      +
      chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
      chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

      -
      ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
      run \
      --chain mainnet \
      --base-path "<NODE_DATA_PATH>" \
      --name "<YOUR_NODE_NAME>" \
      --farmer
      +
      ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
      run \
      --chain mainnet \
      --base-path "<NODE_DATA_PATH>" \
      --name "<YOUR_NODE_NAME>" \
      --farmer
    • note

      Using run, setting --base-path and specifying --chain is mandatory.

      @@ -58,7 +58,7 @@
      +
      # Replace <WALLET_ADDRESS> with your wallet address
      # Replace <PATH_TO_FARM> with the directory where you want to store the plot
      # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

      ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
      --reward-address <WALLET_ADDRESS> \
      path=<PATH_TO_FARM>,size=<PLOT_SIZE>

      You should see output similar to this in your terminal:

      2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
      2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
      2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
      2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
      2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
      2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
      2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
      2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
      2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
      2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
      2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
      2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
      2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
      2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
      2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
      2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
      2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
      2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
      2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
      2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
      2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
      2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
      2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
      2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
      2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
      2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
      2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
      2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
      2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
      2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
      @@ -68,8 +68,8 @@

      You Are
      Windows No Output Bug

      If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

      Step 1: Download the Advanced CLI Executables


      - - + +

      Step 2: Start Advanced CLI Node


      warning

      A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

      # 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-mainnet-2024-nov-06.exe `
      run `
      --chain mainnet `
      --base-path NODE_DATA_PATH `
      --farmer `
      --name "INSERT_YOUR_ID"

      +
      # 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-mainnet-2024-nov-13.exe `
      run `
      --chain mainnet `
      --base-path NODE_DATA_PATH `
      --farmer `
      --name "INSERT_YOUR_ID"
      note

      Using run, setting --base-path and specifying --chain is mandatory.

      1. You should see something similar in the terminal:
      2. @@ -90,7 +90,7 @@

          # Replace `PATH_TO_FARM` with location where you want you store plot files
        # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
        # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
        .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

      +
        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
      1. You should see something similar in the terminal:
      @@ -101,7 +101,7 @@

      Minimum macOS Version

      The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/farming/advanced-cli/taurus/index.html b/farming/advanced-cli/taurus/index.html index 677b9144326..b3824ce1529 100644 --- a/farming/advanced-cli/taurus/index.html +++ b/farming/advanced-cli/taurus/index.html @@ -12,8 +12,8 @@ - - + +

    Taurus Network

    Network Description

    diff --git a/farming/advanced-cli/tips/index.html b/farming/advanced-cli/tips/index.html index bb14bb72a0c..5c6dbca8795 100644 --- a/farming/advanced-cli/tips/index.html +++ b/farming/advanced-cli/tips/index.html @@ -12,8 +12,8 @@ - - + +

    Tips & Tricks

    Additional Tips

    diff --git a/farming/common-problems/index.html b/farming/common-problems/index.html index e698a69a38f..1247eeecce8 100644 --- a/farming/common-problems/index.html +++ b/farming/common-problems/index.html @@ -12,14 +12,14 @@ - - + +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/farming/guides/gpu-plotter/index.html b/farming/guides/gpu-plotter/index.html index e230583e130..13d6e31ab0a 100644 --- a/farming/guides/gpu-plotter/index.html +++ b/farming/guides/gpu-plotter/index.html @@ -12,8 +12,8 @@ - - + +

    GPU Plotter

    Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

    diff --git a/farming/guides/grafana-dashboard/index.html b/farming/guides/grafana-dashboard/index.html index 797963d88e3..6bc6bad8ec3 100644 --- a/farming/guides/grafana-dashboard/index.html +++ b/farming/guides/grafana-dashboard/index.html @@ -12,8 +12,8 @@ - - + +

    Grafana Dashboard

    diff --git a/farming/guides/index.html b/farming/guides/index.html index b299e31b3fb..b240c9bd06a 100644 --- a/farming/guides/index.html +++ b/farming/guides/index.html @@ -12,8 +12,8 @@ - - + + diff --git a/farming/guides/port-config/index.html b/farming/guides/port-config/index.html index 53bc400f52f..b1c93a50b87 100644 --- a/farming/guides/port-config/index.html +++ b/farming/guides/port-config/index.html @@ -12,8 +12,8 @@ - - + +

    Port Forwarding & Firewall

    Overview

    diff --git a/farming/guides/verified-farmer/index.html b/farming/guides/verified-farmer/index.html index 3a6cb2996e2..81f799f8cf6 100644 --- a/farming/guides/verified-farmer/index.html +++ b/farming/guides/verified-farmer/index.html @@ -12,8 +12,8 @@ - - + +

    Verified Farmer Discord Role

    We are thrilled to announce the Verified Farmer role on our Discord server! diff --git a/farming/intro/index.html b/farming/intro/index.html index 0698c478463..c515eb139cf 100644 --- a/farming/intro/index.html +++ b/farming/intro/index.html @@ -12,8 +12,8 @@ - - + +

    Getting Started

    Installation Videos

    For those who prefer a visual guide, we have prepared installation videos to assist you. The videos will help you to set up the Space Acres farming application in under 10 minutes. Please follow the installation videos to use SubWallet to create a compatible Substrate account and refer to the detailed guide on downloading and configuring Autonomys' farming application, Space Acres.

    diff --git a/farming/space-acres/install/index.html b/farming/space-acres/install/index.html index e5e715489d7..a339f8b097a 100644 --- a/farming/space-acres/install/index.html +++ b/farming/space-acres/install/index.html @@ -12,8 +12,8 @@ - - + +

    Install

    Before You Begin

    diff --git a/farming/space-acres/translate/index.html b/farming/space-acres/translate/index.html index 0a988b400d1..758a3bee721 100644 --- a/farming/space-acres/translate/index.html +++ b/farming/space-acres/translate/index.html @@ -12,8 +12,8 @@ - - + +

    Translation Guide

    Supported Languages

    diff --git a/farming/timekeeper/index.html b/farming/timekeeper/index.html index 736d1941bb7..0b32b04cba4 100644 --- a/farming/timekeeper/index.html +++ b/farming/timekeeper/index.html @@ -12,8 +12,8 @@ - - + +

    Timekeeping

    diff --git a/fr/404.html b/fr/404.html index e8f785dd859..8590f9addde 100644 --- a/fr/404.html +++ b/fr/404.html @@ -12,7 +12,7 @@ - + diff --git a/fr/assets/js/3ca0a71c.58632008.js b/fr/assets/js/3ca0a71c.dcc9d555.js similarity index 96% rename from fr/assets/js/3ca0a71c.58632008.js rename to fr/assets/js/3ca0a71c.dcc9d555.js index 5460e625400..0d659cf12af 100644 --- a/fr/assets/js/3ca0a71c.58632008.js +++ b/fr/assets/js/3ca0a71c.dcc9d555.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4786],{1986:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/fr/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/fr/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/fr/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4786],{1986:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/fr/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/fr/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/fr/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/fr/assets/js/9f3a1f0f.d5bb275f.js b/fr/assets/js/9f3a1f0f.6adea3d4.js similarity index 98% rename from fr/assets/js/9f3a1f0f.d5bb275f.js rename to fr/assets/js/9f3a1f0f.6adea3d4.js index 8368e0d5571..6386cc06187 100644 --- a/fr/assets/js/9f3a1f0f.d5bb275f.js +++ b/fr/assets/js/9f3a1f0f.6adea3d4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7249],{9032:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/fr/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/fr/staking/intro"},next:{title:"Deregister an Operator",permalink:"/fr/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7249],{9032:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/fr/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/fr/staking/intro"},next:{title:"Deregister an Operator",permalink:"/fr/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/fr/assets/js/e5a578c6.25d06f7c.js b/fr/assets/js/e5a578c6.d892f6cc.js similarity index 97% rename from fr/assets/js/e5a578c6.25d06f7c.js rename to fr/assets/js/e5a578c6.d892f6cc.js index ba47c0a720a..5c1749d4120 100644 --- a/fr/assets/js/e5a578c6.25d06f7c.js +++ b/fr/assets/js/e5a578c6.d892f6cc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5277],{3557:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/fr/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/fr/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/fr/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5277],{3557:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/fr/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/fr/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/fr/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/fr/assets/js/runtime~main.bf47a3a4.js b/fr/assets/js/runtime~main.23170921.js similarity index 60% rename from fr/assets/js/runtime~main.bf47a3a4.js rename to fr/assets/js/runtime~main.23170921.js index 62327636200..4f0a82cefd9 100644 --- a/fr/assets/js/runtime~main.bf47a3a4.js +++ b/fr/assets/js/runtime~main.23170921.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,f,t,d={},b={};function r(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,f,t)=>{if(!c){var d=1/0;for(i=0;i=t)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(b=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[c,f,t]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);r.r(t);var d={};a=a||[null,c({}),c([]),c(c)];for(var b=2&f&&e;"object"==typeof b&&!~a.indexOf(b);b=c(b))Object.getOwnPropertyNames(b).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(t,d),t},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({635:"2b1c9a99",706:"cebc577a",1235:"a7456010",1723:"c8a8cac7",1883:"b34539f6",2132:"27b4e083",2149:"ad0f0f05",2284:"72dcdf41",2360:"114e2802",2705:"142f63e3",2906:"61119429",2999:"fc93b4d7",3145:"fac7965a",3164:"b365c75d",3474:"0cdef881",3798:"831359d0",3911:"fb6c95b5",3947:"307e2832",4134:"393be207",4438:"206d2b0a",4483:"4bd4d1dc",4583:"1df93b7f",4786:"3ca0a71c",4874:"f63740a4",4903:"5fedb718",5067:"fa94d637",5166:"14385c69",5277:"e5a578c6",5411:"426ffb1a",5429:"15ea95c1",5549:"9caeb154",5698:"26c00b42",5742:"aba21aa0",5954:"96eecebd",6061:"1f391b9e",6386:"5d6995e0",6527:"a1d9bb0c",6738:"e212f5c7",6759:"f99cc666",6785:"c4dbbf8a",6831:"1ff59702",6969:"14eb3368",6984:"50d458dc",7098:"a7bd4aaa",7249:"9f3a1f0f",7262:"84828519",7279:"243195d8",7494:"2955a77a",7742:"7b2e3ec4",7901:"0b73c375",8401:"17896441",8564:"2c1c6cad",8584:"758680a2",8649:"f2214254",8725:"fd41eeb1",8923:"7da7a415",9048:"a94703ab",9647:"5e95c892",9747:"9c0ec34c",9784:"192b04b3"}[e]||e)+"."+{635:"c077324b",706:"feb30ef8",1235:"deb810c9",1688:"433c2b5b",1723:"8f8f8feb",1883:"f63c9f28",2132:"19067462",2149:"6543c7d3",2237:"c851d8b1",2284:"8fed1c4e",2360:"701e7fb2",2440:"ecd0621f",2705:"f449f350",2906:"3a5ba5dd",2999:"abb8a2fb",3145:"b20f5dd1",3164:"1277283c",3474:"5502e07f",3798:"6dd081ec",3911:"a6a717a4",3947:"c13c1488",4134:"be9ae428",4324:"b14b8aad",4438:"bed741de",4483:"8bbe6c56",4583:"c0d080f8",4786:"58632008",4874:"22300d6e",4903:"1cb4e534",5049:"7f13b97c",5067:"b815bbed",5166:"98d4df79",5277:"25d06f7c",5394:"83d77ce3",5411:"b8328b3c",5429:"c007585b",5549:"bc70e113",5698:"7704910e",5742:"08d6695f",5954:"e16e3d21",6061:"fc18f174",6386:"c23d2b16",6527:"4f43b2ef",6688:"86f0bb7d",6738:"f4c9ff39",6759:"4004ec92",6785:"e0ee9927",6831:"18c68699",6969:"4f11b87f",6984:"930d4cd1",7098:"c4e87eeb",7249:"d5bb275f",7262:"cc5318b6",7279:"a2334fdb",7494:"2f8323a1",7742:"9d191864",7901:"8fe68c4c",8401:"3769c7ca",8564:"26ecb5f9",8584:"cdb310d6",8649:"77a18fb4",8725:"6cb296fd",8913:"0680f2c1",8923:"fc375fa7",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9747:"0cf9f9c1",9784:"5c6d54a8"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",r.l=(e,a,c,d)=>{if(f[e])f[e].push(a);else{var b,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],b.parentNode&&b.parentNode.removeChild(b),t&&t.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/fr/",r.gca=function(e){return e={17896441:"8401",61119429:"2906",84828519:"7262","2b1c9a99":"635",cebc577a:"706",a7456010:"1235",c8a8cac7:"1723",b34539f6:"1883","27b4e083":"2132",ad0f0f05:"2149","72dcdf41":"2284","114e2802":"2360","142f63e3":"2705",fc93b4d7:"2999",fac7965a:"3145",b365c75d:"3164","0cdef881":"3474","831359d0":"3798",fb6c95b5:"3911","307e2832":"3947","393be207":"4134","206d2b0a":"4438","4bd4d1dc":"4483","1df93b7f":"4583","3ca0a71c":"4786",f63740a4:"4874","5fedb718":"4903",fa94d637:"5067","14385c69":"5166",e5a578c6:"5277","426ffb1a":"5411","15ea95c1":"5429","9caeb154":"5549","26c00b42":"5698",aba21aa0:"5742","96eecebd":"5954","1f391b9e":"6061","5d6995e0":"6386",a1d9bb0c:"6527",e212f5c7:"6738",f99cc666:"6759",c4dbbf8a:"6785","1ff59702":"6831","14eb3368":"6969","50d458dc":"6984",a7bd4aaa:"7098","9f3a1f0f":"7249","243195d8":"7279","2955a77a":"7494","7b2e3ec4":"7742","0b73c375":"7901","2c1c6cad":"8564","758680a2":"8584",f2214254:"8649",fd41eeb1:"8725","7da7a415":"8923",a94703ab:"9048","5e95c892":"9647","9c0ec34c":"9747","192b04b3":"9784"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((c,t)=>f=e[a]=[c,t]));c.push(f[2]=t);var d=r.p+r.u(a),b=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;b.message="Loading chunk "+a+" failed.\n("+t+": "+d+")",b.name="ChunkLoadError",b.type=t,b.request=d,f[1](b)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,t,d=c[0],b=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(f in b)r.o(b,f)&&(r.m[f]=b[f]);if(o)var i=o(r)}for(a&&a(c);n{"use strict";var e,a,c,b,f,t={},d={};function r(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={exports:{}};return t[e].call(c.exports,c,c.exports,r),c.exports}r.m=t,e=[],r.O=(a,c,b,f)=>{if(!c){var t=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(d=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[c,b,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var t={};a=a||[null,c({}),c([]),c(c)];for(var d=2&b&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,r.d(f,t),f},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({635:"2b1c9a99",706:"cebc577a",1235:"a7456010",1723:"c8a8cac7",1883:"b34539f6",2132:"27b4e083",2149:"ad0f0f05",2284:"72dcdf41",2360:"114e2802",2705:"142f63e3",2906:"61119429",2999:"fc93b4d7",3145:"fac7965a",3164:"b365c75d",3474:"0cdef881",3798:"831359d0",3911:"fb6c95b5",3947:"307e2832",4134:"393be207",4438:"206d2b0a",4483:"4bd4d1dc",4583:"1df93b7f",4786:"3ca0a71c",4874:"f63740a4",4903:"5fedb718",5067:"fa94d637",5166:"14385c69",5277:"e5a578c6",5411:"426ffb1a",5429:"15ea95c1",5549:"9caeb154",5698:"26c00b42",5742:"aba21aa0",5954:"96eecebd",6061:"1f391b9e",6386:"5d6995e0",6527:"a1d9bb0c",6738:"e212f5c7",6759:"f99cc666",6785:"c4dbbf8a",6831:"1ff59702",6969:"14eb3368",6984:"50d458dc",7098:"a7bd4aaa",7249:"9f3a1f0f",7262:"84828519",7279:"243195d8",7494:"2955a77a",7742:"7b2e3ec4",7901:"0b73c375",8401:"17896441",8564:"2c1c6cad",8584:"758680a2",8649:"f2214254",8725:"fd41eeb1",8923:"7da7a415",9048:"a94703ab",9647:"5e95c892",9747:"9c0ec34c",9784:"192b04b3"}[e]||e)+"."+{635:"c077324b",706:"feb30ef8",1235:"deb810c9",1688:"433c2b5b",1723:"8f8f8feb",1883:"f63c9f28",2132:"19067462",2149:"6543c7d3",2237:"c851d8b1",2284:"8fed1c4e",2360:"701e7fb2",2440:"ecd0621f",2705:"f449f350",2906:"3a5ba5dd",2999:"abb8a2fb",3145:"b20f5dd1",3164:"1277283c",3474:"5502e07f",3798:"6dd081ec",3911:"a6a717a4",3947:"c13c1488",4134:"be9ae428",4324:"b14b8aad",4438:"bed741de",4483:"8bbe6c56",4583:"c0d080f8",4786:"dcc9d555",4874:"22300d6e",4903:"1cb4e534",5049:"7f13b97c",5067:"b815bbed",5166:"98d4df79",5277:"d892f6cc",5394:"83d77ce3",5411:"b8328b3c",5429:"c007585b",5549:"bc70e113",5698:"7704910e",5742:"08d6695f",5954:"e16e3d21",6061:"fc18f174",6386:"c23d2b16",6527:"4f43b2ef",6688:"86f0bb7d",6738:"f4c9ff39",6759:"4004ec92",6785:"e0ee9927",6831:"18c68699",6969:"4f11b87f",6984:"930d4cd1",7098:"c4e87eeb",7249:"6adea3d4",7262:"cc5318b6",7279:"a2334fdb",7494:"2f8323a1",7742:"9d191864",7901:"8fe68c4c",8401:"3769c7ca",8564:"26ecb5f9",8584:"cdb310d6",8649:"77a18fb4",8725:"6cb296fd",8913:"0680f2c1",8923:"fc375fa7",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9747:"0cf9f9c1",9784:"5c6d54a8"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},f="portal:",r.l=(e,a,c,t)=>{if(b[e])b[e].push(a);else{var d,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var f=b[e];if(delete b[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/fr/",r.gca=function(e){return e={17896441:"8401",61119429:"2906",84828519:"7262","2b1c9a99":"635",cebc577a:"706",a7456010:"1235",c8a8cac7:"1723",b34539f6:"1883","27b4e083":"2132",ad0f0f05:"2149","72dcdf41":"2284","114e2802":"2360","142f63e3":"2705",fc93b4d7:"2999",fac7965a:"3145",b365c75d:"3164","0cdef881":"3474","831359d0":"3798",fb6c95b5:"3911","307e2832":"3947","393be207":"4134","206d2b0a":"4438","4bd4d1dc":"4483","1df93b7f":"4583","3ca0a71c":"4786",f63740a4:"4874","5fedb718":"4903",fa94d637:"5067","14385c69":"5166",e5a578c6:"5277","426ffb1a":"5411","15ea95c1":"5429","9caeb154":"5549","26c00b42":"5698",aba21aa0:"5742","96eecebd":"5954","1f391b9e":"6061","5d6995e0":"6386",a1d9bb0c:"6527",e212f5c7:"6738",f99cc666:"6759",c4dbbf8a:"6785","1ff59702":"6831","14eb3368":"6969","50d458dc":"6984",a7bd4aaa:"7098","9f3a1f0f":"7249","243195d8":"7279","2955a77a":"7494","7b2e3ec4":"7742","0b73c375":"7901","2c1c6cad":"8564","758680a2":"8584",f2214254:"8649",fd41eeb1:"8725","7da7a415":"8923",a94703ab:"9048","5e95c892":"9647","9c0ec34c":"9747","192b04b3":"9784"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,c)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)c.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>b=e[a]=[c,f]));c.push(b[2]=f);var t=r.p+r.u(a),d=new Error;r.l(t,(c=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",d.name="ChunkLoadError",d.type=f,d.request=t,b[1](d)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var b,f,t=c[0],d=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(b in d)r.o(d,b)&&(r.m[b]=d[b]);if(o)var i=o(r)}for(a&&a(c);n - + diff --git a/fr/develop/auto-sdk/auto-id/index.html b/fr/develop/auto-sdk/auto-id/index.html index b8af75cb9fd..9d7cebd6455 100644 --- a/fr/develop/auto-sdk/auto-id/index.html +++ b/fr/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/consensus/index.html b/fr/develop/auto-sdk/consensus/index.html index 79ea4ca865f..150e1e48e71 100644 --- a/fr/develop/auto-sdk/consensus/index.html +++ b/fr/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/drive/index.html b/fr/develop/auto-sdk/drive/index.html index 489e8205082..4fb7aee52e0 100644 --- a/fr/develop/auto-sdk/drive/index.html +++ b/fr/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/index.html b/fr/develop/auto-sdk/index.html index b355be238f1..ba8491c71aa 100644 --- a/fr/develop/auto-sdk/index.html +++ b/fr/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/intro/index.html b/fr/develop/auto-sdk/intro/index.html index 0db8b6817dd..0d3f9d9f865 100644 --- a/fr/develop/auto-sdk/intro/index.html +++ b/fr/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/utils/index.html b/fr/develop/auto-sdk/utils/index.html index fe5544cca7a..2d6b647e895 100644 --- a/fr/develop/auto-sdk/utils/index.html +++ b/fr/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/xdm/index.html b/fr/develop/auto-sdk/xdm/index.html index 6cd411b67c1..478af716645 100644 --- a/fr/develop/auto-sdk/xdm/index.html +++ b/fr/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/intro/index.html b/fr/develop/intro/index.html index 84c21e17d77..4a1bb0cf146 100644 --- a/fr/develop/intro/index.html +++ b/fr/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/block-explorer/index.html b/fr/develop/nova/block-explorer/index.html index 085d0834c34..a062d41747e 100644 --- a/fr/develop/nova/block-explorer/index.html +++ b/fr/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/faucet/index.html b/fr/develop/nova/faucet/index.html index c51d4a0c321..dfce9fbd7dc 100644 --- a/fr/develop/nova/faucet/index.html +++ b/fr/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/general/index.html b/fr/develop/nova/general/index.html index e53756773e4..5428b4d6262 100644 --- a/fr/develop/nova/general/index.html +++ b/fr/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/foundry/index.html b/fr/develop/nova/guides/foundry/index.html index 25f5ffcb3b1..a38c2f0de15 100644 --- a/fr/develop/nova/guides/foundry/index.html +++ b/fr/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/hardhat/index.html b/fr/develop/nova/guides/hardhat/index.html index 9da62f5c2fe..e1b02b443ed 100644 --- a/fr/develop/nova/guides/hardhat/index.html +++ b/fr/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/local-development/index.html b/fr/develop/nova/guides/local-development/index.html index 8dd1997c89c..2cae79c9331 100644 --- a/fr/develop/nova/guides/local-development/index.html +++ b/fr/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/remix/index.html b/fr/develop/nova/guides/remix/index.html index 7d0e4b0bfb6..f8a7f10b155 100644 --- a/fr/develop/nova/guides/remix/index.html +++ b/fr/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/index.html b/fr/develop/nova/index.html index 042dcc95dff..96c55cd4d2c 100644 --- a/fr/develop/nova/index.html +++ b/fr/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/introduction/index.html b/fr/develop/nova/introduction/index.html index 70cf8ecc1fb..de312d2dfd5 100644 --- a/fr/develop/nova/introduction/index.html +++ b/fr/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/metamask/index.html b/fr/develop/nova/metamask/index.html index 08238ea0fe9..ecbb1b98bb0 100644 --- a/fr/develop/nova/metamask/index.html +++ b/fr/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/cluster/index.html b/fr/farming/advanced-cli/cluster/index.html index 03c685500bd..74c434afc13 100644 --- a/fr/farming/advanced-cli/cluster/index.html +++ b/fr/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/install/index.html b/fr/farming/advanced-cli/install/index.html index 87d3c6e780d..c96b10d832e 100644 --- a/fr/farming/advanced-cli/install/index.html +++ b/fr/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/fr/farming/advanced-cli/taurus/index.html b/fr/farming/advanced-cli/taurus/index.html index ed112100bb6..f4e4f069ebc 100644 --- a/fr/farming/advanced-cli/taurus/index.html +++ b/fr/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/tips/index.html b/fr/farming/advanced-cli/tips/index.html index aa9d12f2531..29d8018437a 100644 --- a/fr/farming/advanced-cli/tips/index.html +++ b/fr/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/common-problems/index.html b/fr/farming/common-problems/index.html index 11915f523e2..1230ffd5b01 100644 --- a/fr/farming/common-problems/index.html +++ b/fr/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/fr/farming/guides/gpu-plotter/index.html b/fr/farming/guides/gpu-plotter/index.html index 52cd2003a5e..6834de82fb1 100644 --- a/fr/farming/guides/gpu-plotter/index.html +++ b/fr/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/grafana-dashboard/index.html b/fr/farming/guides/grafana-dashboard/index.html index 04cccb9d196..d057a37e05f 100644 --- a/fr/farming/guides/grafana-dashboard/index.html +++ b/fr/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/index.html b/fr/farming/guides/index.html index e63b0395da2..b7962b11899 100644 --- a/fr/farming/guides/index.html +++ b/fr/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/port-config/index.html b/fr/farming/guides/port-config/index.html index f62aaf9e588..f58223707c8 100644 --- a/fr/farming/guides/port-config/index.html +++ b/fr/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/verified-farmer/index.html b/fr/farming/guides/verified-farmer/index.html index 13026da207e..4e241ba4174 100644 --- a/fr/farming/guides/verified-farmer/index.html +++ b/fr/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/intro/index.html b/fr/farming/intro/index.html index 4e4614cfd42..8a27613ca3f 100644 --- a/fr/farming/intro/index.html +++ b/fr/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/space-acres/install/index.html b/fr/farming/space-acres/install/index.html index 1487f717f4d..acf8520b085 100644 --- a/fr/farming/space-acres/install/index.html +++ b/fr/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/space-acres/translate/index.html b/fr/farming/space-acres/translate/index.html index 8fa19387585..48ccfe11f9c 100644 --- a/fr/farming/space-acres/translate/index.html +++ b/fr/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/timekeeper/index.html b/fr/farming/timekeeper/index.html index 13b88b5c663..f29ad0aff03 100644 --- a/fr/farming/timekeeper/index.html +++ b/fr/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/index.html b/fr/index.html index fe1a82c9a4f..83ca86c00e9 100644 --- a/fr/index.html +++ b/fr/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/academy/index.html b/fr/learn/academy/index.html index a03bdf6d4ce..54900fd25c6 100644 --- a/fr/learn/academy/index.html +++ b/fr/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/intro/index.html b/fr/learn/intro/index.html index c8cc82c41aa..129a724a543 100644 --- a/fr/learn/intro/index.html +++ b/fr/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/security/index.html b/fr/learn/security/index.html index 58e49427e0d..b6f5069df7a 100644 --- a/fr/learn/security/index.html +++ b/fr/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/markdown-page/index.html b/fr/markdown-page/index.html index d2de1d355ad..109ee0115c1 100644 --- a/fr/markdown-page/index.html +++ b/fr/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/community/resources/index.html b/fr/participate/community/resources/index.html index 741ac8b0950..1774dfb6d32 100644 --- a/fr/participate/community/resources/index.html +++ b/fr/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/community/tools/index.html b/fr/participate/community/tools/index.html index e9489c91ee3..1113ee3522d 100644 --- a/fr/participate/community/tools/index.html +++ b/fr/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/code-of-conduct/index.html b/fr/participate/contribute/code-of-conduct/index.html index 0e459c32e98..8494eb5099c 100644 --- a/fr/participate/contribute/code-of-conduct/index.html +++ b/fr/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/intro/index.html b/fr/participate/contribute/intro/index.html index 0fba5ae3fac..cf4b285c155 100644 --- a/fr/participate/contribute/intro/index.html +++ b/fr/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/translate/index.html b/fr/participate/contribute/translate/index.html index 4442864a042..c1fcc1cd63e 100644 --- a/fr/participate/contribute/translate/index.html +++ b/fr/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/intro/index.html b/fr/staking/intro/index.html index 4fbd79c32a9..4662fa3fdfd 100644 --- a/fr/staking/intro/index.html +++ b/fr/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/operator/deregister/index.html b/fr/staking/operator/deregister/index.html index 07eb2c5f177..30cce3bbe83 100644 --- a/fr/staking/operator/deregister/index.html +++ b/fr/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/operator/register/index.html b/fr/staking/operator/register/index.html index 7bed93e3fef..412bfced3d0 100644 --- a/fr/staking/operator/register/index.html +++ b/fr/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/fr/staking/operator/tips/index.html b/fr/staking/operator/tips/index.html index 00c7c7e6b21..f40f895afae 100644 --- a/fr/staking/operator/tips/index.html +++ b/fr/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/stake/index.html b/fr/staking/stake/index.html index b37112f9967..7ef80de570d 100644 --- a/fr/staking/stake/index.html +++ b/fr/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/wallets/index.html b/fr/wallets/index.html index 76f83d62e12..aac6a51f1b9 100644 --- a/fr/wallets/index.html +++ b/fr/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/wallets/polkadot/index.html b/fr/wallets/polkadot/index.html index 6354b52ee46..f55654d02a5 100644 --- a/fr/wallets/polkadot/index.html +++ b/fr/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/wallets/subwallet/index.html b/fr/wallets/subwallet/index.html index 2172769a3fb..bcd9e393684 100644 --- a/fr/wallets/subwallet/index.html +++ b/fr/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/404.html b/id/404.html index 987a1b45fa2..4e9c9b00c54 100644 --- a/id/404.html +++ b/id/404.html @@ -12,7 +12,7 @@ - + diff --git a/id/assets/js/69989b7b.8ea83d49.js b/id/assets/js/69989b7b.15e03de4.js similarity index 97% rename from id/assets/js/69989b7b.8ea83d49.js rename to id/assets/js/69989b7b.15e03de4.js index 4719dd3c397..830c0fb0f4e 100644 --- a/id/assets/js/69989b7b.8ea83d49.js +++ b/id/assets/js/69989b7b.15e03de4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[393],{8228:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/id/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/id/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/id/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[393],{8228:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/id/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/id/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/id/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/id/assets/js/c8e10704.4a1b5a9c.js b/id/assets/js/c8e10704.49cffde4.js similarity index 98% rename from id/assets/js/c8e10704.4a1b5a9c.js rename to id/assets/js/c8e10704.49cffde4.js index ff37fe67075..551b34f1ae4 100644 --- a/id/assets/js/c8e10704.4a1b5a9c.js +++ b/id/assets/js/c8e10704.49cffde4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4467],{5795:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/id/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/id/staking/intro"},next:{title:"Deregister an Operator",permalink:"/id/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4467],{5795:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/id/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/id/staking/intro"},next:{title:"Deregister an Operator",permalink:"/id/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/id/assets/js/e0366d15.82c7d3b0.js b/id/assets/js/e0366d15.33014dac.js similarity index 96% rename from id/assets/js/e0366d15.82c7d3b0.js rename to id/assets/js/e0366d15.33014dac.js index 3d9bb484d18..e6c7ab7bd30 100644 --- a/id/assets/js/e0366d15.82c7d3b0.js +++ b/id/assets/js/e0366d15.33014dac.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[711],{327:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/id/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/id/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/id/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[711],{327:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/id/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/id/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/id/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/id/assets/js/runtime~main.b3d3809f.js b/id/assets/js/runtime~main.d2683eb6.js similarity index 96% rename from id/assets/js/runtime~main.b3d3809f.js rename to id/assets/js/runtime~main.d2683eb6.js index ccb03966534..7e9caaa52d8 100644 --- a/id/assets/js/runtime~main.b3d3809f.js +++ b/id/assets/js/runtime~main.d2683eb6.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,b,d,t,r={},c={};function f(e){var a=c[e];if(void 0!==a)return a.exports;var b=c[e]={exports:{}};return r[e].call(b.exports,b,b.exports,f),b.exports}f.m=r,e=[],f.O=(a,b,d,t)=>{if(!b){var r=1/0;for(i=0;i=t)&&Object.keys(f.O).every((e=>f.O[e](b[o])))?b.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[b,d,t]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);f.r(t);var r={};a=a||[null,b({}),b([]),b(b)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=b(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,f.d(t,r),t},f.d=(e,a)=>{for(var b in a)f.o(a,b)&&!f.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:a[b]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,b)=>(f.f[b](e,a),a)),[])),f.u=e=>"assets/js/"+({45:"64c21d08",393:"69989b7b",711:"e0366d15",1235:"a7456010",1250:"10457226",1810:"b8d44c53",2151:"44f91cb9",2452:"613b129a",2497:"89cae76e",2503:"cd1624ee",2532:"a6ba7fa5",2675:"d8e6747e",2730:"0b759b5e",3092:"ba8805a2",3232:"b7c29e6a",3235:"0a65db6b",3259:"0bf987f8",3807:"e6b29543",3810:"c24d65a6",4134:"393be207",4162:"2ab06f75",4314:"43cbe75f",4338:"2a3d70e9",4461:"216956e0",4467:"c8e10704",4583:"1df93b7f",4804:"c425dcdb",4860:"3b430c31",5568:"7d6eb928",5578:"fdc3d773",5697:"5a6889cb",5742:"aba21aa0",5777:"e0b6e7a2",5891:"210158f7",5991:"4eab46a1",6006:"96906e00",6061:"1f391b9e",6328:"749a9b70",6365:"fd2e18dd",6548:"40216abe",6555:"0178f34e",6801:"30cf7702",6826:"4fe4b767",6969:"14eb3368",7098:"a7bd4aaa",7302:"e23140d8",7765:"13351c1a",7931:"a2fd5790",8058:"5f25da5e",8120:"b8b9de6a",8401:"17896441",8415:"e7c27558",8582:"94f3b1d0",8617:"14ec1774",8971:"0c419a17",9048:"a94703ab",9226:"d6e1f821",9348:"38457006",9520:"ab78ac32",9647:"5e95c892"}[e]||e)+"."+{45:"b1ec852f",393:"8ea83d49",711:"82c7d3b0",1235:"deb810c9",1250:"c8f71d20",1688:"433c2b5b",1810:"718524d8",2151:"9aab8cb1",2237:"c851d8b1",2440:"ecd0621f",2452:"2d3c579a",2497:"8e6eee15",2503:"d7b0e729",2532:"d88e7cf2",2675:"ff5ebcad",2730:"16a64f88",3092:"33a1a255",3232:"6ac7ac47",3235:"9e0934c3",3259:"e1f1ca15",3807:"31d61583",3810:"af0e1bd8",4134:"671218bc",4162:"a66152aa",4314:"b3d1e936",4324:"b14b8aad",4338:"9e0b86e8",4461:"f7af1723",4467:"4a1b5a9c",4583:"c0d080f8",4804:"e4785200",4860:"708e6c15",5049:"7f13b97c",5394:"83d77ce3",5568:"024e938c",5578:"d7659eab",5697:"adde146b",5742:"08d6695f",5777:"36bba195",5891:"67c202c5",5991:"a36c661d",6006:"c9089a2e",6061:"fc18f174",6328:"b772ef93",6365:"431d840a",6548:"71a1a8c1",6555:"20fa66d9",6688:"86f0bb7d",6801:"3321c423",6826:"33357cec",6969:"4f11b87f",7098:"c4e87eeb",7302:"f8ed272d",7765:"3c6457a3",7931:"198f877b",8058:"fbb968d2",8120:"42038284",8401:"3769c7ca",8415:"b120e60b",8582:"2436380e",8617:"d350875c",8913:"0680f2c1",8971:"2e645c08",9048:"5d6981a0",9226:"a14e26cc",9348:"d8a69e5e",9462:"be2eb63e",9520:"b59f6192",9647:"e4c313e0"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",f.l=(e,a,b,r)=>{if(d[e])d[e].push(a);else{var c,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(b))),a)return a(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/id/",f.gca=function(e){return e={10457226:"1250",17896441:"8401",38457006:"9348","64c21d08":"45","69989b7b":"393",e0366d15:"711",a7456010:"1235",b8d44c53:"1810","44f91cb9":"2151","613b129a":"2452","89cae76e":"2497",cd1624ee:"2503",a6ba7fa5:"2532",d8e6747e:"2675","0b759b5e":"2730",ba8805a2:"3092",b7c29e6a:"3232","0a65db6b":"3235","0bf987f8":"3259",e6b29543:"3807",c24d65a6:"3810","393be207":"4134","2ab06f75":"4162","43cbe75f":"4314","2a3d70e9":"4338","216956e0":"4461",c8e10704:"4467","1df93b7f":"4583",c425dcdb:"4804","3b430c31":"4860","7d6eb928":"5568",fdc3d773:"5578","5a6889cb":"5697",aba21aa0:"5742",e0b6e7a2:"5777","210158f7":"5891","4eab46a1":"5991","96906e00":"6006","1f391b9e":"6061","749a9b70":"6328",fd2e18dd:"6365","40216abe":"6548","0178f34e":"6555","30cf7702":"6801","4fe4b767":"6826","14eb3368":"6969",a7bd4aaa:"7098",e23140d8:"7302","13351c1a":"7765",a2fd5790:"7931","5f25da5e":"8058",b8b9de6a:"8120",e7c27558:"8415","94f3b1d0":"8582","14ec1774":"8617","0c419a17":"8971",a94703ab:"9048",d6e1f821:"9226",ab78ac32:"9520","5e95c892":"9647"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,b)=>{var d=f.o(e,a)?e[a]:void 0;if(0!==d)if(d)b.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((b,t)=>d=e[a]=[b,t]));b.push(d[2]=t);var r=f.p+f.u(a),c=new Error;f.l(r,(b=>{if(f.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=b&&("load"===b.type?"missing":b.type),r=b&&b.target&&b.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,d[1](c)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,b)=>{var d,t,r=b[0],c=b[1],o=b[2],n=0;if(r.some((a=>0!==e[a]))){for(d in c)f.o(c,d)&&(f.m[d]=c[d]);if(o)var i=o(f)}for(a&&a(b);n{"use strict";var e,a,b,d,t,r={},c={};function f(e){var a=c[e];if(void 0!==a)return a.exports;var b=c[e]={exports:{}};return r[e].call(b.exports,b,b.exports,f),b.exports}f.m=r,e=[],f.O=(a,b,d,t)=>{if(!b){var r=1/0;for(i=0;i=t)&&Object.keys(f.O).every((e=>f.O[e](b[o])))?b.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[b,d,t]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);f.r(t);var r={};a=a||[null,b({}),b([]),b(b)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=b(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,f.d(t,r),t},f.d=(e,a)=>{for(var b in a)f.o(a,b)&&!f.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:a[b]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,b)=>(f.f[b](e,a),a)),[])),f.u=e=>"assets/js/"+({45:"64c21d08",393:"69989b7b",711:"e0366d15",1235:"a7456010",1250:"10457226",1810:"b8d44c53",2151:"44f91cb9",2452:"613b129a",2497:"89cae76e",2503:"cd1624ee",2532:"a6ba7fa5",2675:"d8e6747e",2730:"0b759b5e",3092:"ba8805a2",3232:"b7c29e6a",3235:"0a65db6b",3259:"0bf987f8",3807:"e6b29543",3810:"c24d65a6",4134:"393be207",4162:"2ab06f75",4314:"43cbe75f",4338:"2a3d70e9",4461:"216956e0",4467:"c8e10704",4583:"1df93b7f",4804:"c425dcdb",4860:"3b430c31",5568:"7d6eb928",5578:"fdc3d773",5697:"5a6889cb",5742:"aba21aa0",5777:"e0b6e7a2",5891:"210158f7",5991:"4eab46a1",6006:"96906e00",6061:"1f391b9e",6328:"749a9b70",6365:"fd2e18dd",6548:"40216abe",6555:"0178f34e",6801:"30cf7702",6826:"4fe4b767",6969:"14eb3368",7098:"a7bd4aaa",7302:"e23140d8",7765:"13351c1a",7931:"a2fd5790",8058:"5f25da5e",8120:"b8b9de6a",8401:"17896441",8415:"e7c27558",8582:"94f3b1d0",8617:"14ec1774",8971:"0c419a17",9048:"a94703ab",9226:"d6e1f821",9348:"38457006",9520:"ab78ac32",9647:"5e95c892"}[e]||e)+"."+{45:"b1ec852f",393:"15e03de4",711:"33014dac",1235:"deb810c9",1250:"c8f71d20",1688:"433c2b5b",1810:"718524d8",2151:"9aab8cb1",2237:"c851d8b1",2440:"ecd0621f",2452:"2d3c579a",2497:"8e6eee15",2503:"d7b0e729",2532:"d88e7cf2",2675:"ff5ebcad",2730:"16a64f88",3092:"33a1a255",3232:"6ac7ac47",3235:"9e0934c3",3259:"e1f1ca15",3807:"31d61583",3810:"af0e1bd8",4134:"671218bc",4162:"a66152aa",4314:"b3d1e936",4324:"b14b8aad",4338:"9e0b86e8",4461:"f7af1723",4467:"49cffde4",4583:"c0d080f8",4804:"e4785200",4860:"708e6c15",5049:"7f13b97c",5394:"83d77ce3",5568:"024e938c",5578:"d7659eab",5697:"adde146b",5742:"08d6695f",5777:"36bba195",5891:"67c202c5",5991:"a36c661d",6006:"c9089a2e",6061:"fc18f174",6328:"b772ef93",6365:"431d840a",6548:"71a1a8c1",6555:"20fa66d9",6688:"86f0bb7d",6801:"3321c423",6826:"33357cec",6969:"4f11b87f",7098:"c4e87eeb",7302:"f8ed272d",7765:"3c6457a3",7931:"198f877b",8058:"fbb968d2",8120:"42038284",8401:"3769c7ca",8415:"b120e60b",8582:"2436380e",8617:"d350875c",8913:"0680f2c1",8971:"2e645c08",9048:"5d6981a0",9226:"a14e26cc",9348:"d8a69e5e",9462:"be2eb63e",9520:"b59f6192",9647:"e4c313e0"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",f.l=(e,a,b,r)=>{if(d[e])d[e].push(a);else{var c,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(b))),a)return a(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/id/",f.gca=function(e){return e={10457226:"1250",17896441:"8401",38457006:"9348","64c21d08":"45","69989b7b":"393",e0366d15:"711",a7456010:"1235",b8d44c53:"1810","44f91cb9":"2151","613b129a":"2452","89cae76e":"2497",cd1624ee:"2503",a6ba7fa5:"2532",d8e6747e:"2675","0b759b5e":"2730",ba8805a2:"3092",b7c29e6a:"3232","0a65db6b":"3235","0bf987f8":"3259",e6b29543:"3807",c24d65a6:"3810","393be207":"4134","2ab06f75":"4162","43cbe75f":"4314","2a3d70e9":"4338","216956e0":"4461",c8e10704:"4467","1df93b7f":"4583",c425dcdb:"4804","3b430c31":"4860","7d6eb928":"5568",fdc3d773:"5578","5a6889cb":"5697",aba21aa0:"5742",e0b6e7a2:"5777","210158f7":"5891","4eab46a1":"5991","96906e00":"6006","1f391b9e":"6061","749a9b70":"6328",fd2e18dd:"6365","40216abe":"6548","0178f34e":"6555","30cf7702":"6801","4fe4b767":"6826","14eb3368":"6969",a7bd4aaa:"7098",e23140d8:"7302","13351c1a":"7765",a2fd5790:"7931","5f25da5e":"8058",b8b9de6a:"8120",e7c27558:"8415","94f3b1d0":"8582","14ec1774":"8617","0c419a17":"8971",a94703ab:"9048",d6e1f821:"9226",ab78ac32:"9520","5e95c892":"9647"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,b)=>{var d=f.o(e,a)?e[a]:void 0;if(0!==d)if(d)b.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((b,t)=>d=e[a]=[b,t]));b.push(d[2]=t);var r=f.p+f.u(a),c=new Error;f.l(r,(b=>{if(f.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=b&&("load"===b.type?"missing":b.type),r=b&&b.target&&b.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,d[1](c)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,b)=>{var d,t,r=b[0],c=b[1],o=b[2],n=0;if(r.some((a=>0!==e[a]))){for(d in c)f.o(c,d)&&(f.m[d]=c[d]);if(o)var i=o(f)}for(a&&a(b);n - + diff --git a/id/develop/auto-sdk/auto-id/index.html b/id/develop/auto-sdk/auto-id/index.html index 37034452fc9..bd40e2f8242 100644 --- a/id/develop/auto-sdk/auto-id/index.html +++ b/id/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/consensus/index.html b/id/develop/auto-sdk/consensus/index.html index e13d62a036d..b79846c59a0 100644 --- a/id/develop/auto-sdk/consensus/index.html +++ b/id/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/drive/index.html b/id/develop/auto-sdk/drive/index.html index e16245657d9..4be6718eefe 100644 --- a/id/develop/auto-sdk/drive/index.html +++ b/id/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/index.html b/id/develop/auto-sdk/index.html index 5e77b410334..40bd3f23891 100644 --- a/id/develop/auto-sdk/index.html +++ b/id/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/intro/index.html b/id/develop/auto-sdk/intro/index.html index 381c61cd321..f1804799d89 100644 --- a/id/develop/auto-sdk/intro/index.html +++ b/id/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/utils/index.html b/id/develop/auto-sdk/utils/index.html index 98aff032259..e619e5be46d 100644 --- a/id/develop/auto-sdk/utils/index.html +++ b/id/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/xdm/index.html b/id/develop/auto-sdk/xdm/index.html index 8fb28afc5a8..7e6a1f0ccc8 100644 --- a/id/develop/auto-sdk/xdm/index.html +++ b/id/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/intro/index.html b/id/develop/intro/index.html index 7fe91d4ce86..8620deeb9f3 100644 --- a/id/develop/intro/index.html +++ b/id/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/block-explorer/index.html b/id/develop/nova/block-explorer/index.html index cb7bc8dfd15..a9ed158e46f 100644 --- a/id/develop/nova/block-explorer/index.html +++ b/id/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/faucet/index.html b/id/develop/nova/faucet/index.html index 0adad89e417..7cf1f1d9281 100644 --- a/id/develop/nova/faucet/index.html +++ b/id/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/general/index.html b/id/develop/nova/general/index.html index de815e61c3a..a17e1cecdc6 100644 --- a/id/develop/nova/general/index.html +++ b/id/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/foundry/index.html b/id/develop/nova/guides/foundry/index.html index 4bb8e66bca3..4a393723d3d 100644 --- a/id/develop/nova/guides/foundry/index.html +++ b/id/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/hardhat/index.html b/id/develop/nova/guides/hardhat/index.html index 47369b2eb41..16db51e9786 100644 --- a/id/develop/nova/guides/hardhat/index.html +++ b/id/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/local-development/index.html b/id/develop/nova/guides/local-development/index.html index bdfbc5de446..d71c33e2ad9 100644 --- a/id/develop/nova/guides/local-development/index.html +++ b/id/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/remix/index.html b/id/develop/nova/guides/remix/index.html index 5e1cd3dca6a..6ad6b88285f 100644 --- a/id/develop/nova/guides/remix/index.html +++ b/id/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/index.html b/id/develop/nova/index.html index f7e15b24be5..4dd067e2c48 100644 --- a/id/develop/nova/index.html +++ b/id/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/introduction/index.html b/id/develop/nova/introduction/index.html index 10e170b831a..af22c0e5b52 100644 --- a/id/develop/nova/introduction/index.html +++ b/id/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/metamask/index.html b/id/develop/nova/metamask/index.html index f69bc2f9b65..20ffb254f0a 100644 --- a/id/develop/nova/metamask/index.html +++ b/id/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/cluster/index.html b/id/farming/advanced-cli/cluster/index.html index 0b7b71a7d38..c93b17603bb 100644 --- a/id/farming/advanced-cli/cluster/index.html +++ b/id/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/install/index.html b/id/farming/advanced-cli/install/index.html index 7c9cf0fd58b..759e369b187 100644 --- a/id/farming/advanced-cli/install/index.html +++ b/id/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/id/farming/advanced-cli/taurus/index.html b/id/farming/advanced-cli/taurus/index.html index e73a8bc07e6..36e910e9a86 100644 --- a/id/farming/advanced-cli/taurus/index.html +++ b/id/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/tips/index.html b/id/farming/advanced-cli/tips/index.html index 906d77c2e74..d39ff7c0d8b 100644 --- a/id/farming/advanced-cli/tips/index.html +++ b/id/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/common-problems/index.html b/id/farming/common-problems/index.html index 29efa63e0c5..98e6b6a3ac6 100644 --- a/id/farming/common-problems/index.html +++ b/id/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/id/farming/guides/gpu-plotter/index.html b/id/farming/guides/gpu-plotter/index.html index 9d3c6738c75..400f788d7c0 100644 --- a/id/farming/guides/gpu-plotter/index.html +++ b/id/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/grafana-dashboard/index.html b/id/farming/guides/grafana-dashboard/index.html index a22b7ddfd39..a234a602e51 100644 --- a/id/farming/guides/grafana-dashboard/index.html +++ b/id/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/index.html b/id/farming/guides/index.html index 2b59368e8c1..0b4bd09510a 100644 --- a/id/farming/guides/index.html +++ b/id/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/port-config/index.html b/id/farming/guides/port-config/index.html index 0dc3a378dd5..99e12c1c799 100644 --- a/id/farming/guides/port-config/index.html +++ b/id/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/verified-farmer/index.html b/id/farming/guides/verified-farmer/index.html index d03e5b963ce..710dde2a672 100644 --- a/id/farming/guides/verified-farmer/index.html +++ b/id/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/intro/index.html b/id/farming/intro/index.html index fc48c249b5d..5f7ebdf1f68 100644 --- a/id/farming/intro/index.html +++ b/id/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/space-acres/install/index.html b/id/farming/space-acres/install/index.html index 90d53d89339..d8397f08a9e 100644 --- a/id/farming/space-acres/install/index.html +++ b/id/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/space-acres/translate/index.html b/id/farming/space-acres/translate/index.html index 8537d33b9e8..44beac7b2a3 100644 --- a/id/farming/space-acres/translate/index.html +++ b/id/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/timekeeper/index.html b/id/farming/timekeeper/index.html index ed5a8c499dc..40afae15e5c 100644 --- a/id/farming/timekeeper/index.html +++ b/id/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/index.html b/id/index.html index a8882c85ee8..1829b571eb9 100644 --- a/id/index.html +++ b/id/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/academy/index.html b/id/learn/academy/index.html index ddcb87779bc..3fd14ba7f7c 100644 --- a/id/learn/academy/index.html +++ b/id/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/intro/index.html b/id/learn/intro/index.html index db7cfdb772a..b8fff528bac 100644 --- a/id/learn/intro/index.html +++ b/id/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/security/index.html b/id/learn/security/index.html index ee79af31713..234d541d755 100644 --- a/id/learn/security/index.html +++ b/id/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/markdown-page/index.html b/id/markdown-page/index.html index 66198752994..2d722e64199 100644 --- a/id/markdown-page/index.html +++ b/id/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/community/resources/index.html b/id/participate/community/resources/index.html index 2554116e917..4524cd23500 100644 --- a/id/participate/community/resources/index.html +++ b/id/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/community/tools/index.html b/id/participate/community/tools/index.html index 8752c68d4ec..65dc9940b6b 100644 --- a/id/participate/community/tools/index.html +++ b/id/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/code-of-conduct/index.html b/id/participate/contribute/code-of-conduct/index.html index 85877a3facd..28977c61074 100644 --- a/id/participate/contribute/code-of-conduct/index.html +++ b/id/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/intro/index.html b/id/participate/contribute/intro/index.html index 8df9cb5428f..88f693c8281 100644 --- a/id/participate/contribute/intro/index.html +++ b/id/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/translate/index.html b/id/participate/contribute/translate/index.html index ec8a81622b0..846226260a1 100644 --- a/id/participate/contribute/translate/index.html +++ b/id/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/intro/index.html b/id/staking/intro/index.html index dbef1e4ca94..d063f8489b8 100644 --- a/id/staking/intro/index.html +++ b/id/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/operator/deregister/index.html b/id/staking/operator/deregister/index.html index 76129c6bc37..0f59e717005 100644 --- a/id/staking/operator/deregister/index.html +++ b/id/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/operator/register/index.html b/id/staking/operator/register/index.html index b9e6382a56d..6493606f080 100644 --- a/id/staking/operator/register/index.html +++ b/id/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/id/staking/operator/tips/index.html b/id/staking/operator/tips/index.html index 07c31d4c9df..646723512f6 100644 --- a/id/staking/operator/tips/index.html +++ b/id/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/stake/index.html b/id/staking/stake/index.html index 6786352a8a2..cb77c2cb991 100644 --- a/id/staking/stake/index.html +++ b/id/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/wallets/index.html b/id/wallets/index.html index a60ff948afb..b20d7f30988 100644 --- a/id/wallets/index.html +++ b/id/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/wallets/polkadot/index.html b/id/wallets/polkadot/index.html index 338b19d4a0c..d024968b32a 100644 --- a/id/wallets/polkadot/index.html +++ b/id/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/wallets/subwallet/index.html b/id/wallets/subwallet/index.html index 88140223f85..503c8283800 100644 --- a/id/wallets/subwallet/index.html +++ b/id/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/index.html b/index.html index 739972c44f7..7e2794d7edf 100644 --- a/index.html +++ b/index.html @@ -12,8 +12,8 @@ - - + +
    diff --git a/it/404.html b/it/404.html index 1dea3584219..5f36aeb0efc 100644 --- a/it/404.html +++ b/it/404.html @@ -12,7 +12,7 @@ - + diff --git a/it/assets/js/04900b25.35056f6f.js b/it/assets/js/04900b25.ec0159e8.js similarity index 98% rename from it/assets/js/04900b25.35056f6f.js rename to it/assets/js/04900b25.ec0159e8.js index 2b1028269af..b1c114f23c6 100644 --- a/it/assets/js/04900b25.35056f6f.js +++ b/it/assets/js/04900b25.ec0159e8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6633],{131:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/it/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/it/staking/intro"},next:{title:"Deregister an Operator",permalink:"/it/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6633],{131:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/it/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/it/staking/intro"},next:{title:"Deregister an Operator",permalink:"/it/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/it/assets/js/25366074.7bad0de9.js b/it/assets/js/25366074.d6ceee8e.js similarity index 97% rename from it/assets/js/25366074.7bad0de9.js rename to it/assets/js/25366074.d6ceee8e.js index 2b0536929a7..ea70dac78a6 100644 --- a/it/assets/js/25366074.7bad0de9.js +++ b/it/assets/js/25366074.d6ceee8e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3016],{8772:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/it/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/it/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/it/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3016],{8772:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/it/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/it/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/it/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/it/assets/js/a698c97b.daa8bb7f.js b/it/assets/js/a698c97b.e418d6f0.js similarity index 96% rename from it/assets/js/a698c97b.daa8bb7f.js rename to it/assets/js/a698c97b.e418d6f0.js index c5743b2ade6..0a769438a26 100644 --- a/it/assets/js/a698c97b.daa8bb7f.js +++ b/it/assets/js/a698c97b.e418d6f0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[58],{871:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/it/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/it/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/it/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[58],{871:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/it/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/it/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/it/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/it/assets/js/runtime~main.8fd66d23.js b/it/assets/js/runtime~main.77cc8451.js similarity index 66% rename from it/assets/js/runtime~main.8fd66d23.js rename to it/assets/js/runtime~main.77cc8451.js index 844df9ad5d7..699d3f03769 100644 --- a/it/assets/js/runtime~main.8fd66d23.js +++ b/it/assets/js/runtime~main.77cc8451.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,b,t={},c={};function r(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return t[e].call(d.exports,d,d.exports,r),d.exports}r.m=t,e=[],r.O=(a,d,f,b)=>{if(!d){var t=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(c=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var t={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,r.d(b,t),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({40:"c1658a7d",58:"a698c97b",279:"011a5035",310:"f1268acf",801:"ea480abc",1235:"a7456010",1402:"115ccb1c",1431:"2cb6b924",1549:"a027ecc9",2298:"ef19a1b6",2303:"001e7717",2373:"1bbd2ea1",2377:"27f7b93d",2838:"89feb104",2856:"d4368912",2902:"06fa3bb5",3016:"25366074",3067:"119c1f90",3167:"06d8ecfd",3563:"672b0908",3786:"e2d6721f",4118:"70693c2c",4134:"393be207",4197:"7685f262",4215:"84c2dc04",4467:"1e3a5ca5",4507:"526b0ec1",4530:"bfc05f1b",4583:"1df93b7f",4785:"2107e69d",5417:"ae062619",5726:"6fb2e8d2",5742:"aba21aa0",6016:"03ed1e67",6061:"1f391b9e",6269:"ef0db05f",6273:"811999e0",6403:"4374fe63",6633:"04900b25",6963:"d9e17709",6969:"14eb3368",7098:"a7bd4aaa",7441:"2d6fb433",7624:"9ef353dd",7802:"70a3eded",7932:"4eb2dbb6",8399:"0d0994aa",8401:"17896441",8539:"1f04ec67",8643:"302ef6e9",8782:"982dd16c",9048:"a94703ab",9345:"cef82af9",9411:"8453869e",9647:"5e95c892",9754:"234d3c19",9830:"0d0ee0cb",9833:"104327ed",9851:"8608984a",9892:"3e3bf04b"}[e]||e)+"."+{40:"ff33cd77",58:"daa8bb7f",279:"57a46b4d",310:"8d291700",801:"a116f805",1235:"deb810c9",1402:"c64b1cd8",1431:"58223564",1549:"3e5ad92f",1688:"433c2b5b",2237:"c851d8b1",2298:"04c27df5",2303:"3ece853f",2373:"9e920f4e",2377:"18fa2708",2440:"ecd0621f",2838:"8f9ddb8c",2856:"01e2329a",2902:"9a382b0b",3016:"7bad0de9",3067:"00be3e7d",3167:"626586a7",3563:"85c2b27c",3786:"4bb04689",4118:"a6d01b5b",4134:"055bcd0c",4197:"85f897ca",4215:"c2d21659",4324:"b14b8aad",4467:"778a1ca8",4507:"e3699e7c",4530:"bd8de830",4583:"c0d080f8",4785:"2f4df461",5049:"7f13b97c",5394:"83d77ce3",5417:"478bfd53",5726:"419d9f21",5742:"08d6695f",6016:"c1f3d6fc",6061:"fc18f174",6269:"591ecb9c",6273:"67897ec0",6403:"2aec279d",6633:"35056f6f",6688:"86f0bb7d",6963:"d3d1b9b4",6969:"4f11b87f",7098:"c4e87eeb",7441:"cd25b112",7624:"9659c54a",7802:"2856084e",7932:"2e2c762d",8399:"80f83549",8401:"3769c7ca",8539:"9455d5f9",8643:"58606cd9",8782:"b69c1e68",8913:"0680f2c1",9048:"5d6981a0",9345:"8d2a4d1e",9411:"4269933c",9462:"be2eb63e",9647:"e4c313e0",9754:"7a231a96",9830:"c9938b4b",9833:"da61a2d5",9851:"cdbb09b9",9892:"f0a73437"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="portal:",r.l=(e,a,d,t)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/it/",r.gca=function(e){return e={17896441:"8401",25366074:"3016",c1658a7d:"40",a698c97b:"58","011a5035":"279",f1268acf:"310",ea480abc:"801",a7456010:"1235","115ccb1c":"1402","2cb6b924":"1431",a027ecc9:"1549",ef19a1b6:"2298","001e7717":"2303","1bbd2ea1":"2373","27f7b93d":"2377","89feb104":"2838",d4368912:"2856","06fa3bb5":"2902","119c1f90":"3067","06d8ecfd":"3167","672b0908":"3563",e2d6721f:"3786","70693c2c":"4118","393be207":"4134","7685f262":"4197","84c2dc04":"4215","1e3a5ca5":"4467","526b0ec1":"4507",bfc05f1b:"4530","1df93b7f":"4583","2107e69d":"4785",ae062619:"5417","6fb2e8d2":"5726",aba21aa0:"5742","03ed1e67":"6016","1f391b9e":"6061",ef0db05f:"6269","811999e0":"6273","4374fe63":"6403","04900b25":"6633",d9e17709:"6963","14eb3368":"6969",a7bd4aaa:"7098","2d6fb433":"7441","9ef353dd":"7624","70a3eded":"7802","4eb2dbb6":"7932","0d0994aa":"8399","1f04ec67":"8539","302ef6e9":"8643","982dd16c":"8782",a94703ab:"9048",cef82af9:"9345","8453869e":"9411","5e95c892":"9647","234d3c19":"9754","0d0ee0cb":"9830","104327ed":"9833","8608984a":"9851","3e3bf04b":"9892"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>f=e[a]=[d,b]));d.push(f[2]=b);var t=r.p+r.u(a),c=new Error;r.l(t,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),t=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+b+": "+t+")",c.name="ChunkLoadError",c.type=b,c.request=t,f[1](c)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,t=d[0],c=d[1],o=d[2],n=0;if(t.some((a=>0!==e[a]))){for(f in c)r.o(c,f)&&(r.m[f]=c[f]);if(o)var i=o(r)}for(a&&a(d);n{"use strict";var e,a,d,b,f,t={},c={};function r(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return t[e].call(d.exports,d,d.exports,r),d.exports}r.m=t,e=[],r.O=(a,d,b,f)=>{if(!d){var t=1/0;for(i=0;i=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(c=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,b,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var t={};a=a||[null,d({}),d([]),d(d)];for(var c=2&b&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,r.d(f,t),f},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({40:"c1658a7d",58:"a698c97b",279:"011a5035",310:"f1268acf",801:"ea480abc",1235:"a7456010",1402:"115ccb1c",1431:"2cb6b924",1549:"a027ecc9",2298:"ef19a1b6",2303:"001e7717",2373:"1bbd2ea1",2377:"27f7b93d",2838:"89feb104",2856:"d4368912",2902:"06fa3bb5",3016:"25366074",3067:"119c1f90",3167:"06d8ecfd",3563:"672b0908",3786:"e2d6721f",4118:"70693c2c",4134:"393be207",4197:"7685f262",4215:"84c2dc04",4467:"1e3a5ca5",4507:"526b0ec1",4530:"bfc05f1b",4583:"1df93b7f",4785:"2107e69d",5417:"ae062619",5726:"6fb2e8d2",5742:"aba21aa0",6016:"03ed1e67",6061:"1f391b9e",6269:"ef0db05f",6273:"811999e0",6403:"4374fe63",6633:"04900b25",6963:"d9e17709",6969:"14eb3368",7098:"a7bd4aaa",7441:"2d6fb433",7624:"9ef353dd",7802:"70a3eded",7932:"4eb2dbb6",8399:"0d0994aa",8401:"17896441",8539:"1f04ec67",8643:"302ef6e9",8782:"982dd16c",9048:"a94703ab",9345:"cef82af9",9411:"8453869e",9647:"5e95c892",9754:"234d3c19",9830:"0d0ee0cb",9833:"104327ed",9851:"8608984a",9892:"3e3bf04b"}[e]||e)+"."+{40:"ff33cd77",58:"e418d6f0",279:"57a46b4d",310:"8d291700",801:"a116f805",1235:"deb810c9",1402:"c64b1cd8",1431:"58223564",1549:"3e5ad92f",1688:"433c2b5b",2237:"c851d8b1",2298:"04c27df5",2303:"3ece853f",2373:"9e920f4e",2377:"18fa2708",2440:"ecd0621f",2838:"8f9ddb8c",2856:"01e2329a",2902:"9a382b0b",3016:"d6ceee8e",3067:"00be3e7d",3167:"626586a7",3563:"85c2b27c",3786:"4bb04689",4118:"a6d01b5b",4134:"055bcd0c",4197:"85f897ca",4215:"c2d21659",4324:"b14b8aad",4467:"778a1ca8",4507:"e3699e7c",4530:"bd8de830",4583:"c0d080f8",4785:"2f4df461",5049:"7f13b97c",5394:"83d77ce3",5417:"478bfd53",5726:"419d9f21",5742:"08d6695f",6016:"c1f3d6fc",6061:"fc18f174",6269:"591ecb9c",6273:"67897ec0",6403:"2aec279d",6633:"ec0159e8",6688:"86f0bb7d",6963:"d3d1b9b4",6969:"4f11b87f",7098:"c4e87eeb",7441:"cd25b112",7624:"9659c54a",7802:"2856084e",7932:"2e2c762d",8399:"80f83549",8401:"3769c7ca",8539:"9455d5f9",8643:"58606cd9",8782:"b69c1e68",8913:"0680f2c1",9048:"5d6981a0",9345:"8d2a4d1e",9411:"4269933c",9462:"be2eb63e",9647:"e4c313e0",9754:"7a231a96",9830:"c9938b4b",9833:"da61a2d5",9851:"cdbb09b9",9892:"f0a73437"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},f="portal:",r.l=(e,a,d,t)=>{if(b[e])b[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var f=b[e];if(delete b[e],c.parentNode&&c.parentNode.removeChild(c),f&&f.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/it/",r.gca=function(e){return e={17896441:"8401",25366074:"3016",c1658a7d:"40",a698c97b:"58","011a5035":"279",f1268acf:"310",ea480abc:"801",a7456010:"1235","115ccb1c":"1402","2cb6b924":"1431",a027ecc9:"1549",ef19a1b6:"2298","001e7717":"2303","1bbd2ea1":"2373","27f7b93d":"2377","89feb104":"2838",d4368912:"2856","06fa3bb5":"2902","119c1f90":"3067","06d8ecfd":"3167","672b0908":"3563",e2d6721f:"3786","70693c2c":"4118","393be207":"4134","7685f262":"4197","84c2dc04":"4215","1e3a5ca5":"4467","526b0ec1":"4507",bfc05f1b:"4530","1df93b7f":"4583","2107e69d":"4785",ae062619:"5417","6fb2e8d2":"5726",aba21aa0:"5742","03ed1e67":"6016","1f391b9e":"6061",ef0db05f:"6269","811999e0":"6273","4374fe63":"6403","04900b25":"6633",d9e17709:"6963","14eb3368":"6969",a7bd4aaa:"7098","2d6fb433":"7441","9ef353dd":"7624","70a3eded":"7802","4eb2dbb6":"7932","0d0994aa":"8399","1f04ec67":"8539","302ef6e9":"8643","982dd16c":"8782",a94703ab:"9048",cef82af9:"9345","8453869e":"9411","5e95c892":"9647","234d3c19":"9754","0d0ee0cb":"9830","104327ed":"9833","8608984a":"9851","3e3bf04b":"9892"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var b=r.o(e,a)?e[a]:void 0;if(0!==b)if(b)d.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((d,f)=>b=e[a]=[d,f]));d.push(b[2]=f);var t=r.p+r.u(a),c=new Error;r.l(t,(d=>{if(r.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var f=d&&("load"===d.type?"missing":d.type),t=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",c.name="ChunkLoadError",c.type=f,c.request=t,b[1](c)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var b,f,t=d[0],c=d[1],o=d[2],n=0;if(t.some((a=>0!==e[a]))){for(b in c)r.o(c,b)&&(r.m[b]=c[b]);if(o)var i=o(r)}for(a&&a(d);n - + diff --git a/it/develop/auto-sdk/auto-id/index.html b/it/develop/auto-sdk/auto-id/index.html index 8b0b5a92a4d..1633f72b40b 100644 --- a/it/develop/auto-sdk/auto-id/index.html +++ b/it/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/consensus/index.html b/it/develop/auto-sdk/consensus/index.html index 231e7125000..fcc2192bd4b 100644 --- a/it/develop/auto-sdk/consensus/index.html +++ b/it/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/drive/index.html b/it/develop/auto-sdk/drive/index.html index 011f4f52476..9713697ab2b 100644 --- a/it/develop/auto-sdk/drive/index.html +++ b/it/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/index.html b/it/develop/auto-sdk/index.html index 33bf0e5ccae..07c4d3f14ae 100644 --- a/it/develop/auto-sdk/index.html +++ b/it/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/intro/index.html b/it/develop/auto-sdk/intro/index.html index 78d734e8b94..84493f28ff8 100644 --- a/it/develop/auto-sdk/intro/index.html +++ b/it/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/utils/index.html b/it/develop/auto-sdk/utils/index.html index d93ac0f5182..0f421c92df5 100644 --- a/it/develop/auto-sdk/utils/index.html +++ b/it/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/xdm/index.html b/it/develop/auto-sdk/xdm/index.html index fd5b0e2924b..a1088914fd1 100644 --- a/it/develop/auto-sdk/xdm/index.html +++ b/it/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/intro/index.html b/it/develop/intro/index.html index bed7735be2c..3cf7f24af25 100644 --- a/it/develop/intro/index.html +++ b/it/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/block-explorer/index.html b/it/develop/nova/block-explorer/index.html index 1abea385b75..917956c292d 100644 --- a/it/develop/nova/block-explorer/index.html +++ b/it/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/faucet/index.html b/it/develop/nova/faucet/index.html index 7ee0e596531..bb1d41fb741 100644 --- a/it/develop/nova/faucet/index.html +++ b/it/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/general/index.html b/it/develop/nova/general/index.html index 21dc9685ee8..d956f95f3d8 100644 --- a/it/develop/nova/general/index.html +++ b/it/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/foundry/index.html b/it/develop/nova/guides/foundry/index.html index d8b607d6900..6856f03834d 100644 --- a/it/develop/nova/guides/foundry/index.html +++ b/it/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/hardhat/index.html b/it/develop/nova/guides/hardhat/index.html index ab081562b2d..a0baf74b256 100644 --- a/it/develop/nova/guides/hardhat/index.html +++ b/it/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/local-development/index.html b/it/develop/nova/guides/local-development/index.html index bd5fff5e4da..47f25f19557 100644 --- a/it/develop/nova/guides/local-development/index.html +++ b/it/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/remix/index.html b/it/develop/nova/guides/remix/index.html index 7a158dbe001..d8ef3c61b8c 100644 --- a/it/develop/nova/guides/remix/index.html +++ b/it/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/index.html b/it/develop/nova/index.html index be7c4a434e1..83e820f7d73 100644 --- a/it/develop/nova/index.html +++ b/it/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/introduction/index.html b/it/develop/nova/introduction/index.html index 841815cba62..86f3d015ab1 100644 --- a/it/develop/nova/introduction/index.html +++ b/it/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/metamask/index.html b/it/develop/nova/metamask/index.html index 11dd9876931..67ee2afd058 100644 --- a/it/develop/nova/metamask/index.html +++ b/it/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/cluster/index.html b/it/farming/advanced-cli/cluster/index.html index 63955f5c01e..5cd977f6832 100644 --- a/it/farming/advanced-cli/cluster/index.html +++ b/it/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/install/index.html b/it/farming/advanced-cli/install/index.html index 682e81388c5..2242d6b47bd 100644 --- a/it/farming/advanced-cli/install/index.html +++ b/it/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/it/farming/advanced-cli/taurus/index.html b/it/farming/advanced-cli/taurus/index.html index ba4c13e3fd3..8445996642e 100644 --- a/it/farming/advanced-cli/taurus/index.html +++ b/it/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/tips/index.html b/it/farming/advanced-cli/tips/index.html index 13c7c98c0ab..b8801805b58 100644 --- a/it/farming/advanced-cli/tips/index.html +++ b/it/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/common-problems/index.html b/it/farming/common-problems/index.html index efa416036f7..72132586652 100644 --- a/it/farming/common-problems/index.html +++ b/it/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/it/farming/guides/gpu-plotter/index.html b/it/farming/guides/gpu-plotter/index.html index 8a1ddc4294b..46ccd52f579 100644 --- a/it/farming/guides/gpu-plotter/index.html +++ b/it/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/grafana-dashboard/index.html b/it/farming/guides/grafana-dashboard/index.html index 962b05c3509..c025c1e5ff3 100644 --- a/it/farming/guides/grafana-dashboard/index.html +++ b/it/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/index.html b/it/farming/guides/index.html index a8da171b0e0..368d70fe532 100644 --- a/it/farming/guides/index.html +++ b/it/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/port-config/index.html b/it/farming/guides/port-config/index.html index 1c46345bacc..afadac5a799 100644 --- a/it/farming/guides/port-config/index.html +++ b/it/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/verified-farmer/index.html b/it/farming/guides/verified-farmer/index.html index 4b9f6677a23..6c82180a349 100644 --- a/it/farming/guides/verified-farmer/index.html +++ b/it/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/intro/index.html b/it/farming/intro/index.html index 2373d5bffde..7c53d567ac9 100644 --- a/it/farming/intro/index.html +++ b/it/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/space-acres/install/index.html b/it/farming/space-acres/install/index.html index e1602f1595f..5392980daed 100644 --- a/it/farming/space-acres/install/index.html +++ b/it/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/space-acres/translate/index.html b/it/farming/space-acres/translate/index.html index 24fc30b9e4b..fcfe4e55a1c 100644 --- a/it/farming/space-acres/translate/index.html +++ b/it/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/timekeeper/index.html b/it/farming/timekeeper/index.html index d0bfeef8452..c58addb4461 100644 --- a/it/farming/timekeeper/index.html +++ b/it/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/index.html b/it/index.html index 9f3232f6eff..ecc9dd569d8 100644 --- a/it/index.html +++ b/it/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/academy/index.html b/it/learn/academy/index.html index a82a8029494..6564c24be69 100644 --- a/it/learn/academy/index.html +++ b/it/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/intro/index.html b/it/learn/intro/index.html index 05e24b74e09..30509a79076 100644 --- a/it/learn/intro/index.html +++ b/it/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/security/index.html b/it/learn/security/index.html index baba0a72787..7fc0618cfe3 100644 --- a/it/learn/security/index.html +++ b/it/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/markdown-page/index.html b/it/markdown-page/index.html index 3cd77eca141..ae529f0ae68 100644 --- a/it/markdown-page/index.html +++ b/it/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/community/resources/index.html b/it/participate/community/resources/index.html index 6e258d64bed..25baf9d845b 100644 --- a/it/participate/community/resources/index.html +++ b/it/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/community/tools/index.html b/it/participate/community/tools/index.html index 1ec75b037f8..1d497166c59 100644 --- a/it/participate/community/tools/index.html +++ b/it/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/code-of-conduct/index.html b/it/participate/contribute/code-of-conduct/index.html index efeac11b6ef..76b12cedfdc 100644 --- a/it/participate/contribute/code-of-conduct/index.html +++ b/it/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/intro/index.html b/it/participate/contribute/intro/index.html index c4e040126e9..02689b85fe6 100644 --- a/it/participate/contribute/intro/index.html +++ b/it/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/translate/index.html b/it/participate/contribute/translate/index.html index b8131ef94a4..5269f6cc475 100644 --- a/it/participate/contribute/translate/index.html +++ b/it/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/intro/index.html b/it/staking/intro/index.html index 0ccdd387f29..3e0e9038b7f 100644 --- a/it/staking/intro/index.html +++ b/it/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/operator/deregister/index.html b/it/staking/operator/deregister/index.html index 65c1c9088a7..0fa5284a94f 100644 --- a/it/staking/operator/deregister/index.html +++ b/it/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/operator/register/index.html b/it/staking/operator/register/index.html index 7dde6d3e292..31f50910c82 100644 --- a/it/staking/operator/register/index.html +++ b/it/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/it/staking/operator/tips/index.html b/it/staking/operator/tips/index.html index 9a3072de1ab..142951a8b82 100644 --- a/it/staking/operator/tips/index.html +++ b/it/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/stake/index.html b/it/staking/stake/index.html index 6f230f136ce..933ce691452 100644 --- a/it/staking/stake/index.html +++ b/it/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/wallets/index.html b/it/wallets/index.html index ab972d2906e..0025fc78559 100644 --- a/it/wallets/index.html +++ b/it/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/wallets/polkadot/index.html b/it/wallets/polkadot/index.html index 6d6ebd14f1c..c04cd5bcd2f 100644 --- a/it/wallets/polkadot/index.html +++ b/it/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/wallets/subwallet/index.html b/it/wallets/subwallet/index.html index 1fc6b3c98ec..2a7209f4641 100644 --- a/it/wallets/subwallet/index.html +++ b/it/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/404.html b/ja/404.html index d86b598b7c5..84240abfdfc 100644 --- a/ja/404.html +++ b/ja/404.html @@ -12,7 +12,7 @@ - + diff --git a/ja/assets/js/2bb19d25.7eb40a98.js b/ja/assets/js/2bb19d25.edaf2a37.js similarity index 98% rename from ja/assets/js/2bb19d25.7eb40a98.js rename to ja/assets/js/2bb19d25.edaf2a37.js index 9ceae106598..6ec4381832d 100644 --- a/ja/assets/js/2bb19d25.7eb40a98.js +++ b/ja/assets/js/2bb19d25.edaf2a37.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2540],{9271:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ja/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/ja/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ja/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2540],{9271:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ja/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/ja/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ja/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/ja/assets/js/6c9dac31.7a7c0940.js b/ja/assets/js/6c9dac31.c8534abd.js similarity index 97% rename from ja/assets/js/6c9dac31.7a7c0940.js rename to ja/assets/js/6c9dac31.c8534abd.js index d114fece937..c2befa4967d 100644 --- a/ja/assets/js/6c9dac31.7a7c0940.js +++ b/ja/assets/js/6c9dac31.c8534abd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2397],{1176:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ja/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ja/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ja/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2397],{1176:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ja/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ja/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ja/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/9745df56.a057a1fd.js b/ja/assets/js/9745df56.f1c1ef6c.js similarity index 96% rename from ja/assets/js/9745df56.a057a1fd.js rename to ja/assets/js/9745df56.f1c1ef6c.js index 1e957d51682..8b45cba4a38 100644 --- a/ja/assets/js/9745df56.a057a1fd.js +++ b/ja/assets/js/9745df56.f1c1ef6c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5585],{5555:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ja/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/ja/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ja/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5585],{5555:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ja/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/ja/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ja/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/ja/assets/js/runtime~main.a532b675.js b/ja/assets/js/runtime~main.721143fd.js similarity index 68% rename from ja/assets/js/runtime~main.a532b675.js rename to ja/assets/js/runtime~main.721143fd.js index eb761787252..a7e734a972c 100644 --- a/ja/assets/js/runtime~main.a532b675.js +++ b/ja/assets/js/runtime~main.721143fd.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({275:"0bba6ca7",641:"7cd25360",1039:"bc69aaa7",1198:"2e948be8",1235:"a7456010",1429:"f58a6a07",1591:"fdb6ad41",1728:"fa198208",1749:"410ccc15",2040:"99721135",2110:"4d213d36",2336:"0298f259",2397:"6c9dac31",2465:"502b192a",2511:"dbf01c2b",2540:"2bb19d25",2806:"5e769384",3133:"515e4a07",3343:"4ebe817f",3885:"e122e195",3915:"a2370e6d",4048:"e9d3c9a5",4072:"51239083",4134:"393be207",4159:"de3f38ed",4223:"fb012c88",4583:"1df93b7f",4613:"39cdd3e3",4675:"822000d0",4749:"9057879e",4835:"e185667f",4859:"1a2f47b7",4965:"435b5230",5062:"e3266403",5190:"52e88af4",5585:"9745df56",5742:"aba21aa0",5898:"ab684fff",5902:"ee59f65f",6061:"1f391b9e",6692:"817d17e4",6969:"14eb3368",7098:"a7bd4aaa",7181:"c14112cc",7515:"14a5a6ec",7898:"e03da008",8125:"3d4815c4",8217:"7c4cb041",8240:"bd3b5e8d",8303:"7b97c9c6",8401:"17896441",8466:"3a48dd49",8505:"c4b86b81",8808:"62cb37f0",8972:"a726fef2",8989:"40d95585",9048:"a94703ab",9647:"5e95c892",9678:"3ae15989",9833:"d0ce2ade"}[e]||e)+"."+{275:"f72a476f",641:"7d557303",1039:"fa0cb3fe",1198:"2a182474",1235:"deb810c9",1429:"3e3bdca4",1591:"b8ff2307",1688:"433c2b5b",1728:"22a840d5",1749:"bce7edd5",2040:"0b86edbc",2110:"006ad5fa",2237:"c851d8b1",2336:"95396786",2397:"7a7c0940",2440:"ecd0621f",2465:"c4c8f414",2511:"a5b9b9b7",2540:"7eb40a98",2806:"cf1c0721",3133:"cac7fd02",3343:"6b992e00",3885:"21373a8a",3915:"7705cb48",4048:"ffb09175",4072:"aa3110d7",4134:"f1ca457b",4159:"b372fc24",4223:"7bcc9fbf",4324:"b14b8aad",4583:"c0d080f8",4613:"99c7bac8",4675:"15f42b29",4749:"09e014a7",4835:"b20dea00",4859:"5c49da20",4965:"16edae2c",5049:"7f13b97c",5062:"9f574131",5190:"3e66fe53",5394:"83d77ce3",5585:"a057a1fd",5742:"08d6695f",5898:"01df80aa",5902:"cad88d6d",6061:"fc18f174",6688:"86f0bb7d",6692:"fe7b7ffa",6969:"4f11b87f",7098:"c4e87eeb",7181:"74c042b1",7515:"19f66ccc",7898:"d2e20bf6",8125:"0d69c2dd",8217:"d6e1db61",8240:"02cade7c",8303:"156de57f",8401:"3769c7ca",8466:"acb37544",8505:"58575603",8808:"81da89fe",8913:"0680f2c1",8972:"dfce805f",8989:"86a9f53e",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9678:"69226566",9833:"7d35128c"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ja/",b.gca=function(e){return e={17896441:"8401",51239083:"4072",99721135:"2040","0bba6ca7":"275","7cd25360":"641",bc69aaa7:"1039","2e948be8":"1198",a7456010:"1235",f58a6a07:"1429",fdb6ad41:"1591",fa198208:"1728","410ccc15":"1749","4d213d36":"2110","0298f259":"2336","6c9dac31":"2397","502b192a":"2465",dbf01c2b:"2511","2bb19d25":"2540","5e769384":"2806","515e4a07":"3133","4ebe817f":"3343",e122e195:"3885",a2370e6d:"3915",e9d3c9a5:"4048","393be207":"4134",de3f38ed:"4159",fb012c88:"4223","1df93b7f":"4583","39cdd3e3":"4613","822000d0":"4675","9057879e":"4749",e185667f:"4835","1a2f47b7":"4859","435b5230":"4965",e3266403:"5062","52e88af4":"5190","9745df56":"5585",aba21aa0:"5742",ab684fff:"5898",ee59f65f:"5902","1f391b9e":"6061","817d17e4":"6692","14eb3368":"6969",a7bd4aaa:"7098",c14112cc:"7181","14a5a6ec":"7515",e03da008:"7898","3d4815c4":"8125","7c4cb041":"8217",bd3b5e8d:"8240","7b97c9c6":"8303","3a48dd49":"8466",c4b86b81:"8505","62cb37f0":"8808",a726fef2:"8972","40d95585":"8989",a94703ab:"9048","5e95c892":"9647","3ae15989":"9678",d0ce2ade:"9833"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],c=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,f,t,c={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var d=r[e]={exports:{}};return c[e].call(d.exports,d,d.exports,b),d.exports}b.m=c,e=[],b.O=(a,d,f,t)=>{if(!d){var c=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var c={};a=a||[null,d({}),d([]),d(d)];for(var r=2&f&&e;"object"==typeof r&&!~a.indexOf(r);r=d(r))Object.getOwnPropertyNames(r).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(t,c),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({275:"0bba6ca7",641:"7cd25360",1039:"bc69aaa7",1198:"2e948be8",1235:"a7456010",1429:"f58a6a07",1591:"fdb6ad41",1728:"fa198208",1749:"410ccc15",2040:"99721135",2110:"4d213d36",2336:"0298f259",2397:"6c9dac31",2465:"502b192a",2511:"dbf01c2b",2540:"2bb19d25",2806:"5e769384",3133:"515e4a07",3343:"4ebe817f",3885:"e122e195",3915:"a2370e6d",4048:"e9d3c9a5",4072:"51239083",4134:"393be207",4159:"de3f38ed",4223:"fb012c88",4583:"1df93b7f",4613:"39cdd3e3",4675:"822000d0",4749:"9057879e",4835:"e185667f",4859:"1a2f47b7",4965:"435b5230",5062:"e3266403",5190:"52e88af4",5585:"9745df56",5742:"aba21aa0",5898:"ab684fff",5902:"ee59f65f",6061:"1f391b9e",6692:"817d17e4",6969:"14eb3368",7098:"a7bd4aaa",7181:"c14112cc",7515:"14a5a6ec",7898:"e03da008",8125:"3d4815c4",8217:"7c4cb041",8240:"bd3b5e8d",8303:"7b97c9c6",8401:"17896441",8466:"3a48dd49",8505:"c4b86b81",8808:"62cb37f0",8972:"a726fef2",8989:"40d95585",9048:"a94703ab",9647:"5e95c892",9678:"3ae15989",9833:"d0ce2ade"}[e]||e)+"."+{275:"f72a476f",641:"7d557303",1039:"fa0cb3fe",1198:"2a182474",1235:"deb810c9",1429:"3e3bdca4",1591:"b8ff2307",1688:"433c2b5b",1728:"22a840d5",1749:"bce7edd5",2040:"0b86edbc",2110:"006ad5fa",2237:"c851d8b1",2336:"95396786",2397:"c8534abd",2440:"ecd0621f",2465:"c4c8f414",2511:"a5b9b9b7",2540:"edaf2a37",2806:"cf1c0721",3133:"cac7fd02",3343:"6b992e00",3885:"21373a8a",3915:"7705cb48",4048:"ffb09175",4072:"aa3110d7",4134:"f1ca457b",4159:"b372fc24",4223:"7bcc9fbf",4324:"b14b8aad",4583:"c0d080f8",4613:"99c7bac8",4675:"15f42b29",4749:"09e014a7",4835:"b20dea00",4859:"5c49da20",4965:"16edae2c",5049:"7f13b97c",5062:"9f574131",5190:"3e66fe53",5394:"83d77ce3",5585:"f1c1ef6c",5742:"08d6695f",5898:"01df80aa",5902:"cad88d6d",6061:"fc18f174",6688:"86f0bb7d",6692:"fe7b7ffa",6969:"4f11b87f",7098:"c4e87eeb",7181:"74c042b1",7515:"19f66ccc",7898:"d2e20bf6",8125:"0d69c2dd",8217:"d6e1db61",8240:"02cade7c",8303:"156de57f",8401:"3769c7ca",8466:"acb37544",8505:"58575603",8808:"81da89fe",8913:"0680f2c1",8972:"dfce805f",8989:"86a9f53e",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9678:"69226566",9833:"7d35128c"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var r,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ja/",b.gca=function(e){return e={17896441:"8401",51239083:"4072",99721135:"2040","0bba6ca7":"275","7cd25360":"641",bc69aaa7:"1039","2e948be8":"1198",a7456010:"1235",f58a6a07:"1429",fdb6ad41:"1591",fa198208:"1728","410ccc15":"1749","4d213d36":"2110","0298f259":"2336","6c9dac31":"2397","502b192a":"2465",dbf01c2b:"2511","2bb19d25":"2540","5e769384":"2806","515e4a07":"3133","4ebe817f":"3343",e122e195:"3885",a2370e6d:"3915",e9d3c9a5:"4048","393be207":"4134",de3f38ed:"4159",fb012c88:"4223","1df93b7f":"4583","39cdd3e3":"4613","822000d0":"4675","9057879e":"4749",e185667f:"4835","1a2f47b7":"4859","435b5230":"4965",e3266403:"5062","52e88af4":"5190","9745df56":"5585",aba21aa0:"5742",ab684fff:"5898",ee59f65f:"5902","1f391b9e":"6061","817d17e4":"6692","14eb3368":"6969",a7bd4aaa:"7098",c14112cc:"7181","14a5a6ec":"7515",e03da008:"7898","3d4815c4":"8125","7c4cb041":"8217",bd3b5e8d:"8240","7b97c9c6":"8303","3a48dd49":"8466",c4b86b81:"8505","62cb37f0":"8808",a726fef2:"8972","40d95585":"8989",a94703ab:"9048","5e95c892":"9647","3ae15989":"9678",d0ce2ade:"9833"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var c=b.p+b.u(a),r=new Error;b.l(c,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+c+")",r.name="ChunkLoadError",r.type=t,r.request=c,f[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,c=d[0],r=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(f in r)b.o(r,f)&&(b.m[f]=r[f]);if(o)var i=o(b)}for(a&&a(d);n - + diff --git a/ja/develop/auto-sdk/auto-id/index.html b/ja/develop/auto-sdk/auto-id/index.html index 9859ce57742..1c1ecfedcc8 100644 --- a/ja/develop/auto-sdk/auto-id/index.html +++ b/ja/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/consensus/index.html b/ja/develop/auto-sdk/consensus/index.html index 5aa874892e5..d4da8b5de60 100644 --- a/ja/develop/auto-sdk/consensus/index.html +++ b/ja/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/drive/index.html b/ja/develop/auto-sdk/drive/index.html index 93706e2468b..f74c990f200 100644 --- a/ja/develop/auto-sdk/drive/index.html +++ b/ja/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/index.html b/ja/develop/auto-sdk/index.html index 6b8f87eb582..ed65852fc59 100644 --- a/ja/develop/auto-sdk/index.html +++ b/ja/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/intro/index.html b/ja/develop/auto-sdk/intro/index.html index f8f071cafcd..da765dee99d 100644 --- a/ja/develop/auto-sdk/intro/index.html +++ b/ja/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/utils/index.html b/ja/develop/auto-sdk/utils/index.html index 1a5c85085be..95b711ea61d 100644 --- a/ja/develop/auto-sdk/utils/index.html +++ b/ja/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/xdm/index.html b/ja/develop/auto-sdk/xdm/index.html index ceb7581d6c8..3da3451a631 100644 --- a/ja/develop/auto-sdk/xdm/index.html +++ b/ja/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/intro/index.html b/ja/develop/intro/index.html index 3874ed2c798..b913c6aad1d 100644 --- a/ja/develop/intro/index.html +++ b/ja/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/block-explorer/index.html b/ja/develop/nova/block-explorer/index.html index 1a5a18de0d5..fe49de82e00 100644 --- a/ja/develop/nova/block-explorer/index.html +++ b/ja/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/faucet/index.html b/ja/develop/nova/faucet/index.html index 2c332014123..5e17da3142e 100644 --- a/ja/develop/nova/faucet/index.html +++ b/ja/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/general/index.html b/ja/develop/nova/general/index.html index 417af2f6d51..70395e6c082 100644 --- a/ja/develop/nova/general/index.html +++ b/ja/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/foundry/index.html b/ja/develop/nova/guides/foundry/index.html index d0149891fd1..5c3359363cd 100644 --- a/ja/develop/nova/guides/foundry/index.html +++ b/ja/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/hardhat/index.html b/ja/develop/nova/guides/hardhat/index.html index 8ed69149ca9..d70ed8ae925 100644 --- a/ja/develop/nova/guides/hardhat/index.html +++ b/ja/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/local-development/index.html b/ja/develop/nova/guides/local-development/index.html index 872482b314f..4d268adf1c9 100644 --- a/ja/develop/nova/guides/local-development/index.html +++ b/ja/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/remix/index.html b/ja/develop/nova/guides/remix/index.html index 5d1f1dfc5af..d97a40e6eb3 100644 --- a/ja/develop/nova/guides/remix/index.html +++ b/ja/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/index.html b/ja/develop/nova/index.html index 0eddbf704b6..804127072d3 100644 --- a/ja/develop/nova/index.html +++ b/ja/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/introduction/index.html b/ja/develop/nova/introduction/index.html index 7fe6bcdefb2..9002f658488 100644 --- a/ja/develop/nova/introduction/index.html +++ b/ja/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/metamask/index.html b/ja/develop/nova/metamask/index.html index 4dcf771f3ca..f8b4f3d31a9 100644 --- a/ja/develop/nova/metamask/index.html +++ b/ja/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/cluster/index.html b/ja/farming/advanced-cli/cluster/index.html index 06db528d11e..73b617a2e80 100644 --- a/ja/farming/advanced-cli/cluster/index.html +++ b/ja/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/install/index.html b/ja/farming/advanced-cli/install/index.html index 326d7ec4d25..da251a7d8e8 100644 --- a/ja/farming/advanced-cli/install/index.html +++ b/ja/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/ja/farming/advanced-cli/taurus/index.html b/ja/farming/advanced-cli/taurus/index.html index 65166b8557a..f0d2c76c45f 100644 --- a/ja/farming/advanced-cli/taurus/index.html +++ b/ja/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/tips/index.html b/ja/farming/advanced-cli/tips/index.html index 77684750bda..a514d647647 100644 --- a/ja/farming/advanced-cli/tips/index.html +++ b/ja/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/common-problems/index.html b/ja/farming/common-problems/index.html index d4f4f9d6d20..5b5364f5a76 100644 --- a/ja/farming/common-problems/index.html +++ b/ja/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/ja/farming/guides/gpu-plotter/index.html b/ja/farming/guides/gpu-plotter/index.html index 842c67c4c6f..db2ed766f52 100644 --- a/ja/farming/guides/gpu-plotter/index.html +++ b/ja/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/grafana-dashboard/index.html b/ja/farming/guides/grafana-dashboard/index.html index 3bd68183506..39574fb68a2 100644 --- a/ja/farming/guides/grafana-dashboard/index.html +++ b/ja/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/index.html b/ja/farming/guides/index.html index dda10909a1a..28d3ba207ec 100644 --- a/ja/farming/guides/index.html +++ b/ja/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/port-config/index.html b/ja/farming/guides/port-config/index.html index a6ad939bb01..82eb08dc091 100644 --- a/ja/farming/guides/port-config/index.html +++ b/ja/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/verified-farmer/index.html b/ja/farming/guides/verified-farmer/index.html index 382b582a11b..1108a3ef8c8 100644 --- a/ja/farming/guides/verified-farmer/index.html +++ b/ja/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/intro/index.html b/ja/farming/intro/index.html index fd2758382c6..e89c44826a6 100644 --- a/ja/farming/intro/index.html +++ b/ja/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/space-acres/install/index.html b/ja/farming/space-acres/install/index.html index 62521fa8538..fab5788e1ae 100644 --- a/ja/farming/space-acres/install/index.html +++ b/ja/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/space-acres/translate/index.html b/ja/farming/space-acres/translate/index.html index c8e665a1277..5f513babde9 100644 --- a/ja/farming/space-acres/translate/index.html +++ b/ja/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/timekeeper/index.html b/ja/farming/timekeeper/index.html index 2657019fd06..8c27924e4d5 100644 --- a/ja/farming/timekeeper/index.html +++ b/ja/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/index.html b/ja/index.html index d23086e107d..ec4c12809b3 100644 --- a/ja/index.html +++ b/ja/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/academy/index.html b/ja/learn/academy/index.html index 4bf5f0f3516..452e328b997 100644 --- a/ja/learn/academy/index.html +++ b/ja/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/intro/index.html b/ja/learn/intro/index.html index 495de24c39f..038bb7254cc 100644 --- a/ja/learn/intro/index.html +++ b/ja/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/security/index.html b/ja/learn/security/index.html index 11bfa813d91..ca4f857aa82 100644 --- a/ja/learn/security/index.html +++ b/ja/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/markdown-page/index.html b/ja/markdown-page/index.html index 997bafcbf27..96bd438a1a3 100644 --- a/ja/markdown-page/index.html +++ b/ja/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/community/resources/index.html b/ja/participate/community/resources/index.html index ecf0e1d53d7..402ffc7e7c8 100644 --- a/ja/participate/community/resources/index.html +++ b/ja/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/community/tools/index.html b/ja/participate/community/tools/index.html index 5707b7840c1..0d3498fbde5 100644 --- a/ja/participate/community/tools/index.html +++ b/ja/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/code-of-conduct/index.html b/ja/participate/contribute/code-of-conduct/index.html index d270ea2a75b..95056fd46f5 100644 --- a/ja/participate/contribute/code-of-conduct/index.html +++ b/ja/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/intro/index.html b/ja/participate/contribute/intro/index.html index 73366d3f81d..a8f1b026f2d 100644 --- a/ja/participate/contribute/intro/index.html +++ b/ja/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/translate/index.html b/ja/participate/contribute/translate/index.html index 5a97c96a1c1..ae8eb3b9d6b 100644 --- a/ja/participate/contribute/translate/index.html +++ b/ja/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/intro/index.html b/ja/staking/intro/index.html index d0d27fe1afd..e4da0a4a42f 100644 --- a/ja/staking/intro/index.html +++ b/ja/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/operator/deregister/index.html b/ja/staking/operator/deregister/index.html index 013117e0c1b..6a35f6b5c4a 100644 --- a/ja/staking/operator/deregister/index.html +++ b/ja/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/operator/register/index.html b/ja/staking/operator/register/index.html index 5ec80185391..a3fc7bc7e6c 100644 --- a/ja/staking/operator/register/index.html +++ b/ja/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/ja/staking/operator/tips/index.html b/ja/staking/operator/tips/index.html index d86b3b2cbba..69315008421 100644 --- a/ja/staking/operator/tips/index.html +++ b/ja/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/stake/index.html b/ja/staking/stake/index.html index 19e3f57412d..70a503d7677 100644 --- a/ja/staking/stake/index.html +++ b/ja/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/wallets/index.html b/ja/wallets/index.html index 9de59aa6192..84237817ec9 100644 --- a/ja/wallets/index.html +++ b/ja/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/wallets/polkadot/index.html b/ja/wallets/polkadot/index.html index 04add866b8c..380155bd3b0 100644 --- a/ja/wallets/polkadot/index.html +++ b/ja/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/wallets/subwallet/index.html b/ja/wallets/subwallet/index.html index 4496e35b0ae..386b0e1f35e 100644 --- a/ja/wallets/subwallet/index.html +++ b/ja/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/learn/academy/index.html b/learn/academy/index.html index 05ac16122cf..28c10e36d91 100644 --- a/learn/academy/index.html +++ b/learn/academy/index.html @@ -12,8 +12,8 @@ - - + +

    Discover the Autonomys' protocol - Subspace Protocol

    diff --git a/learn/intro/index.html b/learn/intro/index.html index 6bec135f836..51be619874b 100644 --- a/learn/intro/index.html +++ b/learn/intro/index.html @@ -12,8 +12,8 @@ - - + +

    👋Welcome

    diff --git a/learn/security/index.html b/learn/security/index.html index ba103b68497..19ed70ca334 100644 --- a/learn/security/index.html +++ b/learn/security/index.html @@ -12,8 +12,8 @@ - - + +

    Safety and Security

    Venturing into the digital world and engaging in a crypto project can be thrilling, but following top security practices is essential. Here is a general guide to security and safety, including basic measures for securing servers and home PCs. Your adherence to these practices contributes to the stability of the Autonomys network and, of course, the safety of the community's cryptoassets.

    diff --git a/markdown-page/index.html b/markdown-page/index.html index 50aa19ec0b3..89b0b810418 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -12,8 +12,8 @@ - - + +

    Markdown page example

    diff --git a/participate/community/resources/index.html b/participate/community/resources/index.html index 54a4c19ff8a..4684dbad987 100644 --- a/participate/community/resources/index.html +++ b/participate/community/resources/index.html @@ -12,8 +12,8 @@ - - + +

    Community Resources

    caution

    Please note, all community provided resources are non-official. For clarification please refer to official materials.

    diff --git a/participate/community/tools/index.html b/participate/community/tools/index.html index f4ce69a8375..b2fd77165b9 100644 --- a/participate/community/tools/index.html +++ b/participate/community/tools/index.html @@ -12,8 +12,8 @@ - - + +

    Community Tools

    Community Curated Collection of Useful Third Party Tools

    diff --git a/participate/contribute/code-of-conduct/index.html b/participate/contribute/code-of-conduct/index.html index 81690374040..75f5d596e50 100644 --- a/participate/contribute/code-of-conduct/index.html +++ b/participate/contribute/code-of-conduct/index.html @@ -12,8 +12,8 @@ - - + +

    Contributor Covenant Code of Conduct

    diff --git a/participate/contribute/intro/index.html b/participate/contribute/intro/index.html index c38078bb35e..730dfe46ce8 100644 --- a/participate/contribute/intro/index.html +++ b/participate/contribute/intro/index.html @@ -12,8 +12,8 @@ - - + +

    How to Contribute!

    diff --git a/participate/contribute/translate/index.html b/participate/contribute/translate/index.html index a65e768b872..509249da0b7 100644 --- a/participate/contribute/translate/index.html +++ b/participate/contribute/translate/index.html @@ -12,8 +12,8 @@ - - + +

    Docs Translation

    Translation Guide

    diff --git a/pl/404.html b/pl/404.html index 2d9f097ce22..1f8451be5d8 100644 --- a/pl/404.html +++ b/pl/404.html @@ -12,7 +12,7 @@ - + diff --git a/pl/assets/js/50fe8524.04b17464.js b/pl/assets/js/50fe8524.40259632.js similarity index 98% rename from pl/assets/js/50fe8524.04b17464.js rename to pl/assets/js/50fe8524.40259632.js index 378f87f4741..686853960d0 100644 --- a/pl/assets/js/50fe8524.04b17464.js +++ b/pl/assets/js/50fe8524.40259632.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9768],{720:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/pl/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/pl/staking/intro"},next:{title:"Deregister an Operator",permalink:"/pl/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9768],{720:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/pl/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/pl/staking/intro"},next:{title:"Deregister an Operator",permalink:"/pl/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/pl/assets/js/6751f2a0.3b81bc8d.js b/pl/assets/js/6751f2a0.a49fe21e.js similarity index 96% rename from pl/assets/js/6751f2a0.3b81bc8d.js rename to pl/assets/js/6751f2a0.a49fe21e.js index 227a5d1c246..f672170094c 100644 --- a/pl/assets/js/6751f2a0.3b81bc8d.js +++ b/pl/assets/js/6751f2a0.a49fe21e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6927],{9514:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/pl/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/pl/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/pl/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6927],{9514:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/pl/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/pl/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/pl/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/pl/assets/js/f6c98558.682055ab.js b/pl/assets/js/f6c98558.dbadf36a.js similarity index 97% rename from pl/assets/js/f6c98558.682055ab.js rename to pl/assets/js/f6c98558.dbadf36a.js index 1fbe3db374c..1001b7d725e 100644 --- a/pl/assets/js/f6c98558.682055ab.js +++ b/pl/assets/js/f6c98558.dbadf36a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7653],{8925:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/pl/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/pl/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/pl/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7653],{8925:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/pl/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/pl/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/pl/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/pl/assets/js/runtime~main.49fcd417.js b/pl/assets/js/runtime~main.87e4b840.js similarity index 96% rename from pl/assets/js/runtime~main.49fcd417.js rename to pl/assets/js/runtime~main.87e4b840.js index 37de43987bd..39ef1fcbebd 100644 --- a/pl/assets/js/runtime~main.49fcd417.js +++ b/pl/assets/js/runtime~main.87e4b840.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,d,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,t,d)=>{if(!f){var r=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,t,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(d,r),d},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({197:"3da4f561",405:"103ff9de",714:"0ab09ffa",1067:"312111de",1093:"bba96e03",1104:"964479f8",1235:"a7456010",1333:"df3729f7",1503:"7d8600f1",2003:"1943909a",2009:"e0d75aac",2116:"b3af323e",2411:"a1df72ba",2774:"1c5356ca",2972:"509fd2f9",3165:"e265c610",3669:"fc11e675",3800:"37776d56",3993:"a9464c6c",4134:"393be207",4196:"790db1b2",4388:"11c71ce0",4583:"1df93b7f",4853:"040cd4a6",4865:"9fc8e71e",5012:"93d0262a",5574:"ab716d5a",5622:"1014d7d2",5653:"62546065",5742:"aba21aa0",6055:"0ef392a2",6061:"1f391b9e",6162:"eb9b337f",6467:"51f9c404",6853:"33e95a08",6927:"6751f2a0",6969:"14eb3368",7098:"a7bd4aaa",7417:"dcf7cf0c",7584:"062225aa",7653:"f6c98558",7722:"3752163b",8189:"6452863b",8401:"17896441",8932:"1b1a8462",9048:"a94703ab",9070:"4ba63bb7",9123:"c93f639e",9156:"79841e9f",9251:"380c5315",9352:"93f63ceb",9401:"73f59ed1",9457:"0abf8bf7",9505:"6e2fde40",9532:"5dad069f",9576:"90a6813a",9623:"9fb47fd0",9647:"5e95c892",9768:"50fe8524",9780:"c03d332c"}[e]||e)+"."+{197:"7d961937",405:"90e16398",714:"39a9464a",1067:"cf7a7a3f",1093:"9a6ad029",1104:"7da09580",1235:"deb810c9",1333:"d14cfcc3",1503:"2ae23039",1688:"433c2b5b",2003:"278062f1",2009:"52cfb604",2116:"5f8e5f9d",2237:"c851d8b1",2411:"b49b4978",2440:"ecd0621f",2774:"0fd4f1ce",2972:"ec5e3276",3165:"1c05865e",3669:"2b09431c",3800:"d16f5a70",3993:"ec61504a",4134:"5d3bc313",4196:"5d05e2d7",4324:"b14b8aad",4388:"0be7d44c",4583:"c0d080f8",4853:"57b290fc",4865:"0dde3a54",5012:"458714c7",5049:"7f13b97c",5394:"83d77ce3",5574:"f2b9385e",5622:"6c735889",5653:"5b7b9c1a",5742:"08d6695f",6055:"e6533b9d",6061:"fc18f174",6162:"e06d66ed",6467:"378257b0",6688:"86f0bb7d",6853:"619bba34",6927:"3b81bc8d",6969:"4f11b87f",7098:"c4e87eeb",7417:"dc420b48",7584:"7a3dbf58",7653:"682055ab",7722:"6eed7564",8189:"aa7fdf56",8401:"3769c7ca",8913:"0680f2c1",8932:"d4241f09",9048:"5d6981a0",9070:"392c1df7",9123:"301e372a",9156:"fd784b2d",9251:"f54ab75d",9352:"d14d4a73",9401:"d053f5dd",9457:"067dc0a4",9462:"be2eb63e",9505:"21c50600",9532:"1f701243",9576:"a39d5c4b",9623:"5b42b70f",9647:"e4c313e0",9768:"04b17464",9780:"48659d51"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="portal:",b.l=(e,a,f,r)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var d=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pl/",b.gca=function(e){return e={17896441:"8401",62546065:"5653","3da4f561":"197","103ff9de":"405","0ab09ffa":"714","312111de":"1067",bba96e03:"1093","964479f8":"1104",a7456010:"1235",df3729f7:"1333","7d8600f1":"1503","1943909a":"2003",e0d75aac:"2009",b3af323e:"2116",a1df72ba:"2411","1c5356ca":"2774","509fd2f9":"2972",e265c610:"3165",fc11e675:"3669","37776d56":"3800",a9464c6c:"3993","393be207":"4134","790db1b2":"4196","11c71ce0":"4388","1df93b7f":"4583","040cd4a6":"4853","9fc8e71e":"4865","93d0262a":"5012",ab716d5a:"5574","1014d7d2":"5622",aba21aa0:"5742","0ef392a2":"6055","1f391b9e":"6061",eb9b337f:"6162","51f9c404":"6467","33e95a08":"6853","6751f2a0":"6927","14eb3368":"6969",a7bd4aaa:"7098",dcf7cf0c:"7417","062225aa":"7584",f6c98558:"7653","3752163b":"7722","6452863b":"8189","1b1a8462":"8932",a94703ab:"9048","4ba63bb7":"9070",c93f639e:"9123","79841e9f":"9156","380c5315":"9251","93f63ceb":"9352","73f59ed1":"9401","0abf8bf7":"9457","6e2fde40":"9505","5dad069f":"9532","90a6813a":"9576","9fb47fd0":"9623","5e95c892":"9647","50fe8524":"9768",c03d332c:"9780"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>t=e[a]=[f,d]));f.push(t[2]=d);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+d+": "+r+")",c.name="ChunkLoadError",c.type=d,c.request=r,t[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,d,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(t in c)b.o(c,t)&&(b.m[t]=c[t]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,t,d,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,t,d)=>{if(!f){var r=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,t,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(d,r),d},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({197:"3da4f561",405:"103ff9de",714:"0ab09ffa",1067:"312111de",1093:"bba96e03",1104:"964479f8",1235:"a7456010",1333:"df3729f7",1503:"7d8600f1",2003:"1943909a",2009:"e0d75aac",2116:"b3af323e",2411:"a1df72ba",2774:"1c5356ca",2972:"509fd2f9",3165:"e265c610",3669:"fc11e675",3800:"37776d56",3993:"a9464c6c",4134:"393be207",4196:"790db1b2",4388:"11c71ce0",4583:"1df93b7f",4853:"040cd4a6",4865:"9fc8e71e",5012:"93d0262a",5574:"ab716d5a",5622:"1014d7d2",5653:"62546065",5742:"aba21aa0",6055:"0ef392a2",6061:"1f391b9e",6162:"eb9b337f",6467:"51f9c404",6853:"33e95a08",6927:"6751f2a0",6969:"14eb3368",7098:"a7bd4aaa",7417:"dcf7cf0c",7584:"062225aa",7653:"f6c98558",7722:"3752163b",8189:"6452863b",8401:"17896441",8932:"1b1a8462",9048:"a94703ab",9070:"4ba63bb7",9123:"c93f639e",9156:"79841e9f",9251:"380c5315",9352:"93f63ceb",9401:"73f59ed1",9457:"0abf8bf7",9505:"6e2fde40",9532:"5dad069f",9576:"90a6813a",9623:"9fb47fd0",9647:"5e95c892",9768:"50fe8524",9780:"c03d332c"}[e]||e)+"."+{197:"7d961937",405:"90e16398",714:"39a9464a",1067:"cf7a7a3f",1093:"9a6ad029",1104:"7da09580",1235:"deb810c9",1333:"d14cfcc3",1503:"2ae23039",1688:"433c2b5b",2003:"278062f1",2009:"52cfb604",2116:"5f8e5f9d",2237:"c851d8b1",2411:"b49b4978",2440:"ecd0621f",2774:"0fd4f1ce",2972:"ec5e3276",3165:"1c05865e",3669:"2b09431c",3800:"d16f5a70",3993:"ec61504a",4134:"5d3bc313",4196:"5d05e2d7",4324:"b14b8aad",4388:"0be7d44c",4583:"c0d080f8",4853:"57b290fc",4865:"0dde3a54",5012:"458714c7",5049:"7f13b97c",5394:"83d77ce3",5574:"f2b9385e",5622:"6c735889",5653:"5b7b9c1a",5742:"08d6695f",6055:"e6533b9d",6061:"fc18f174",6162:"e06d66ed",6467:"378257b0",6688:"86f0bb7d",6853:"619bba34",6927:"a49fe21e",6969:"4f11b87f",7098:"c4e87eeb",7417:"dc420b48",7584:"7a3dbf58",7653:"dbadf36a",7722:"6eed7564",8189:"aa7fdf56",8401:"3769c7ca",8913:"0680f2c1",8932:"d4241f09",9048:"5d6981a0",9070:"392c1df7",9123:"301e372a",9156:"fd784b2d",9251:"f54ab75d",9352:"d14d4a73",9401:"d053f5dd",9457:"067dc0a4",9462:"be2eb63e",9505:"21c50600",9532:"1f701243",9576:"a39d5c4b",9623:"5b42b70f",9647:"e4c313e0",9768:"40259632",9780:"48659d51"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="portal:",b.l=(e,a,f,r)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var d=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pl/",b.gca=function(e){return e={17896441:"8401",62546065:"5653","3da4f561":"197","103ff9de":"405","0ab09ffa":"714","312111de":"1067",bba96e03:"1093","964479f8":"1104",a7456010:"1235",df3729f7:"1333","7d8600f1":"1503","1943909a":"2003",e0d75aac:"2009",b3af323e:"2116",a1df72ba:"2411","1c5356ca":"2774","509fd2f9":"2972",e265c610:"3165",fc11e675:"3669","37776d56":"3800",a9464c6c:"3993","393be207":"4134","790db1b2":"4196","11c71ce0":"4388","1df93b7f":"4583","040cd4a6":"4853","9fc8e71e":"4865","93d0262a":"5012",ab716d5a:"5574","1014d7d2":"5622",aba21aa0:"5742","0ef392a2":"6055","1f391b9e":"6061",eb9b337f:"6162","51f9c404":"6467","33e95a08":"6853","6751f2a0":"6927","14eb3368":"6969",a7bd4aaa:"7098",dcf7cf0c:"7417","062225aa":"7584",f6c98558:"7653","3752163b":"7722","6452863b":"8189","1b1a8462":"8932",a94703ab:"9048","4ba63bb7":"9070",c93f639e:"9123","79841e9f":"9156","380c5315":"9251","93f63ceb":"9352","73f59ed1":"9401","0abf8bf7":"9457","6e2fde40":"9505","5dad069f":"9532","90a6813a":"9576","9fb47fd0":"9623","5e95c892":"9647","50fe8524":"9768",c03d332c:"9780"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>t=e[a]=[f,d]));f.push(t[2]=d);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+d+": "+r+")",c.name="ChunkLoadError",c.type=d,c.request=r,t[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,d,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(t in c)b.o(c,t)&&(b.m[t]=c[t]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/pl/develop/auto-sdk/auto-id/index.html b/pl/develop/auto-sdk/auto-id/index.html index af43a0e02ca..8e52d100dfb 100644 --- a/pl/develop/auto-sdk/auto-id/index.html +++ b/pl/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/consensus/index.html b/pl/develop/auto-sdk/consensus/index.html index 93c7e7d5ce3..6bd2bcc9bc7 100644 --- a/pl/develop/auto-sdk/consensus/index.html +++ b/pl/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/drive/index.html b/pl/develop/auto-sdk/drive/index.html index 77b0e7c40f0..3080c3705d3 100644 --- a/pl/develop/auto-sdk/drive/index.html +++ b/pl/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/index.html b/pl/develop/auto-sdk/index.html index 8923fe113e8..86d061b2cd7 100644 --- a/pl/develop/auto-sdk/index.html +++ b/pl/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/intro/index.html b/pl/develop/auto-sdk/intro/index.html index 36200f879f7..a66bdd65852 100644 --- a/pl/develop/auto-sdk/intro/index.html +++ b/pl/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/utils/index.html b/pl/develop/auto-sdk/utils/index.html index cd62e697767..f7d55a77202 100644 --- a/pl/develop/auto-sdk/utils/index.html +++ b/pl/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/xdm/index.html b/pl/develop/auto-sdk/xdm/index.html index 106ebe1c0e9..a9e4765d52a 100644 --- a/pl/develop/auto-sdk/xdm/index.html +++ b/pl/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/intro/index.html b/pl/develop/intro/index.html index 8b2a3b4b966..ff9c3135179 100644 --- a/pl/develop/intro/index.html +++ b/pl/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/block-explorer/index.html b/pl/develop/nova/block-explorer/index.html index 1a9f44f109b..8b8d5ae0820 100644 --- a/pl/develop/nova/block-explorer/index.html +++ b/pl/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/faucet/index.html b/pl/develop/nova/faucet/index.html index 60bda104239..97d4cfc666d 100644 --- a/pl/develop/nova/faucet/index.html +++ b/pl/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/general/index.html b/pl/develop/nova/general/index.html index f81f1fab357..e45947e2af4 100644 --- a/pl/develop/nova/general/index.html +++ b/pl/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/foundry/index.html b/pl/develop/nova/guides/foundry/index.html index 6b5b93eea02..f66ef3d131f 100644 --- a/pl/develop/nova/guides/foundry/index.html +++ b/pl/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/hardhat/index.html b/pl/develop/nova/guides/hardhat/index.html index c0ca2c020f0..612785c4587 100644 --- a/pl/develop/nova/guides/hardhat/index.html +++ b/pl/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/local-development/index.html b/pl/develop/nova/guides/local-development/index.html index 4e5423d144b..0807eced41c 100644 --- a/pl/develop/nova/guides/local-development/index.html +++ b/pl/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/remix/index.html b/pl/develop/nova/guides/remix/index.html index 473d0cc7671..eede9bf618a 100644 --- a/pl/develop/nova/guides/remix/index.html +++ b/pl/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/index.html b/pl/develop/nova/index.html index 9170ebc9a75..f18835170d7 100644 --- a/pl/develop/nova/index.html +++ b/pl/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/introduction/index.html b/pl/develop/nova/introduction/index.html index 00790446f78..72afed1637c 100644 --- a/pl/develop/nova/introduction/index.html +++ b/pl/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/metamask/index.html b/pl/develop/nova/metamask/index.html index 7456bc4726d..483b8eb52d4 100644 --- a/pl/develop/nova/metamask/index.html +++ b/pl/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/cluster/index.html b/pl/farming/advanced-cli/cluster/index.html index 617c3eed586..8b98ea74f70 100644 --- a/pl/farming/advanced-cli/cluster/index.html +++ b/pl/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/install/index.html b/pl/farming/advanced-cli/install/index.html index 7bd4aacc37e..df1bc3d15b3 100644 --- a/pl/farming/advanced-cli/install/index.html +++ b/pl/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/pl/farming/advanced-cli/taurus/index.html b/pl/farming/advanced-cli/taurus/index.html index a8a36456637..90dd1b442dc 100644 --- a/pl/farming/advanced-cli/taurus/index.html +++ b/pl/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/tips/index.html b/pl/farming/advanced-cli/tips/index.html index 7a32ab9afaa..5aa3a783b3d 100644 --- a/pl/farming/advanced-cli/tips/index.html +++ b/pl/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/common-problems/index.html b/pl/farming/common-problems/index.html index 35775b9da0f..b971d6dfaf9 100644 --- a/pl/farming/common-problems/index.html +++ b/pl/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/pl/farming/guides/gpu-plotter/index.html b/pl/farming/guides/gpu-plotter/index.html index 92da72da309..5722de52a02 100644 --- a/pl/farming/guides/gpu-plotter/index.html +++ b/pl/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/grafana-dashboard/index.html b/pl/farming/guides/grafana-dashboard/index.html index b1d287ba421..934ab929057 100644 --- a/pl/farming/guides/grafana-dashboard/index.html +++ b/pl/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/index.html b/pl/farming/guides/index.html index 81f1f2339c3..9ebdd88fd59 100644 --- a/pl/farming/guides/index.html +++ b/pl/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/port-config/index.html b/pl/farming/guides/port-config/index.html index 44ce35814ba..40cbdeec400 100644 --- a/pl/farming/guides/port-config/index.html +++ b/pl/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/verified-farmer/index.html b/pl/farming/guides/verified-farmer/index.html index 9ca7f435266..3d8e60742ab 100644 --- a/pl/farming/guides/verified-farmer/index.html +++ b/pl/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/intro/index.html b/pl/farming/intro/index.html index e2327b010b5..d5fdbfcd152 100644 --- a/pl/farming/intro/index.html +++ b/pl/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/space-acres/install/index.html b/pl/farming/space-acres/install/index.html index 4257da5ef22..6f41dfc90a6 100644 --- a/pl/farming/space-acres/install/index.html +++ b/pl/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/space-acres/translate/index.html b/pl/farming/space-acres/translate/index.html index 44ff78c1eb5..3ec7fa9a0c8 100644 --- a/pl/farming/space-acres/translate/index.html +++ b/pl/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/timekeeper/index.html b/pl/farming/timekeeper/index.html index ea12a21d02f..db3d64877d3 100644 --- a/pl/farming/timekeeper/index.html +++ b/pl/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/index.html b/pl/index.html index 749dc56eaf0..bbc1f57ed12 100644 --- a/pl/index.html +++ b/pl/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/academy/index.html b/pl/learn/academy/index.html index dc3ec448031..79162183ab3 100644 --- a/pl/learn/academy/index.html +++ b/pl/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/intro/index.html b/pl/learn/intro/index.html index a631601c5e4..025bdd7cf01 100644 --- a/pl/learn/intro/index.html +++ b/pl/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/security/index.html b/pl/learn/security/index.html index 1f121925368..488a82de33b 100644 --- a/pl/learn/security/index.html +++ b/pl/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/markdown-page/index.html b/pl/markdown-page/index.html index c07d1a47545..67ed5f61e8c 100644 --- a/pl/markdown-page/index.html +++ b/pl/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/community/resources/index.html b/pl/participate/community/resources/index.html index 41611c40e38..434d39a4261 100644 --- a/pl/participate/community/resources/index.html +++ b/pl/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/community/tools/index.html b/pl/participate/community/tools/index.html index 34c3d1fb979..d9ccb14a5e0 100644 --- a/pl/participate/community/tools/index.html +++ b/pl/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/code-of-conduct/index.html b/pl/participate/contribute/code-of-conduct/index.html index fb52394448a..4a1c6e72417 100644 --- a/pl/participate/contribute/code-of-conduct/index.html +++ b/pl/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/intro/index.html b/pl/participate/contribute/intro/index.html index ded657489fa..205f63796f5 100644 --- a/pl/participate/contribute/intro/index.html +++ b/pl/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/translate/index.html b/pl/participate/contribute/translate/index.html index d6a8923011c..7ac1f48d1f5 100644 --- a/pl/participate/contribute/translate/index.html +++ b/pl/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/intro/index.html b/pl/staking/intro/index.html index 9550c4c3775..9250649aebd 100644 --- a/pl/staking/intro/index.html +++ b/pl/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/operator/deregister/index.html b/pl/staking/operator/deregister/index.html index 578ed70b5c1..73720b35189 100644 --- a/pl/staking/operator/deregister/index.html +++ b/pl/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/operator/register/index.html b/pl/staking/operator/register/index.html index 39f0592ef0e..94cf86e530a 100644 --- a/pl/staking/operator/register/index.html +++ b/pl/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/pl/staking/operator/tips/index.html b/pl/staking/operator/tips/index.html index df770796f15..fc5c4f54673 100644 --- a/pl/staking/operator/tips/index.html +++ b/pl/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/stake/index.html b/pl/staking/stake/index.html index 63df49c9b42..5a7a2d39018 100644 --- a/pl/staking/stake/index.html +++ b/pl/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/wallets/index.html b/pl/wallets/index.html index f531d8e7b96..3596321a815 100644 --- a/pl/wallets/index.html +++ b/pl/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/wallets/polkadot/index.html b/pl/wallets/polkadot/index.html index 970fd2a1418..ddfb9e88b9e 100644 --- a/pl/wallets/polkadot/index.html +++ b/pl/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/wallets/subwallet/index.html b/pl/wallets/subwallet/index.html index c68394037c6..8782d3129bc 100644 --- a/pl/wallets/subwallet/index.html +++ b/pl/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/404.html b/pt/404.html index e9c90e09f70..a216e90133a 100644 --- a/pt/404.html +++ b/pt/404.html @@ -12,7 +12,7 @@ - + diff --git a/pt/assets/js/2f7803b9.bf0d727a.js b/pt/assets/js/2f7803b9.63a21695.js similarity index 97% rename from pt/assets/js/2f7803b9.bf0d727a.js rename to pt/assets/js/2f7803b9.63a21695.js index 4a2b41259ed..659150da879 100644 --- a/pt/assets/js/2f7803b9.bf0d727a.js +++ b/pt/assets/js/2f7803b9.63a21695.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9706],{8837:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/pt/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/pt/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/pt/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9706],{8837:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/pt/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/pt/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/pt/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/pt/assets/js/c315e93d.86ec4aae.js b/pt/assets/js/c315e93d.21946233.js similarity index 96% rename from pt/assets/js/c315e93d.86ec4aae.js rename to pt/assets/js/c315e93d.21946233.js index 4c7f423e17e..de524bf4f76 100644 --- a/pt/assets/js/c315e93d.86ec4aae.js +++ b/pt/assets/js/c315e93d.21946233.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8088],{9570:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/pt/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/pt/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/pt/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8088],{9570:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/pt/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/pt/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/pt/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/pt/assets/js/cf0bae56.f673c80c.js b/pt/assets/js/cf0bae56.f0cace21.js similarity index 98% rename from pt/assets/js/cf0bae56.f673c80c.js rename to pt/assets/js/cf0bae56.f0cace21.js index 1f93036d26a..322184607a9 100644 --- a/pt/assets/js/cf0bae56.f673c80c.js +++ b/pt/assets/js/cf0bae56.f0cace21.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3853],{4168:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/pt/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/pt/staking/intro"},next:{title:"Deregister an Operator",permalink:"/pt/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3853],{4168:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/pt/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/pt/staking/intro"},next:{title:"Deregister an Operator",permalink:"/pt/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/pt/assets/js/runtime~main.48e3657b.js b/pt/assets/js/runtime~main.a2517f30.js similarity index 63% rename from pt/assets/js/runtime~main.48e3657b.js rename to pt/assets/js/runtime~main.a2517f30.js index 02cf0a6a283..242416538d8 100644 --- a/pt/assets/js/runtime~main.48e3657b.js +++ b/pt/assets/js/runtime~main.a2517f30.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,f,r,d={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return d[e].call(t.exports,t,t.exports,b),t.exports}b.m=d,e=[],b.O=(a,t,f,r)=>{if(!t){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](t[o])))?t.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[t,f,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};a=a||[null,t({}),t([]),t(t)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,b.d(r,d),r},b.d=(e,a)=>{for(var t in a)b.o(a,t)&&!b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,t)=>(b.f[t](e,a),a)),[])),b.u=e=>"assets/js/"+({568:"7414882c",653:"5453af66",1e3:"05a6e5eb",1073:"5b21eb5b",1150:"6a53963f",1206:"637d1e43",1235:"a7456010",1246:"2ff9f15f",1330:"e64716c7",1613:"4b374b1c",2173:"0f607e68",2499:"f8ece6c6",2591:"7a87b078",2801:"81a80031",2815:"238d2612",2975:"14175527",2978:"623420e1",3750:"0f768022",3853:"cf0bae56",4134:"393be207",4428:"6945023b",4455:"1a68e964",4567:"4ff510f0",4583:"1df93b7f",4720:"1d290942",4739:"a0ccf6a6",5116:"2c7e9cf0",5244:"7c84b674",5484:"a7c1348b",5742:"aba21aa0",6034:"a9392d3d",6061:"1f391b9e",6442:"b5b41e46",6489:"3878d6a7",6631:"e83dc2a6",6740:"8e8980be",6744:"d1a2a840",6797:"99eeb480",6969:"14eb3368",7098:"a7bd4aaa",7238:"5a04c05e",7700:"a0e5e030",7806:"3778cde8",7837:"9afbf091",8088:"c315e93d",8115:"e703806e",8275:"297df787",8345:"e26024d7",8356:"a03666e8",8401:"17896441",8472:"5e3aacc0",8945:"095d206d",8969:"70fdb4e0",9048:"a94703ab",9145:"d5e150a1",9525:"35b0986e",9556:"d2a252f3",9593:"15769cf5",9647:"5e95c892",9706:"2f7803b9"}[e]||e)+"."+{568:"f1d8d464",653:"1626d7a2",1e3:"11ba548e",1073:"743d5175",1150:"e81ae72b",1206:"2e519de2",1235:"deb810c9",1246:"f82dade5",1330:"e1b2a6bb",1613:"f4f2b693",1688:"433c2b5b",2173:"265ab4b5",2237:"c851d8b1",2440:"ecd0621f",2499:"cb5361c6",2591:"6d853e08",2801:"80b2de7f",2815:"c9df1f01",2975:"3097f1ee",2978:"07d4f3ba",3750:"8430ac10",3853:"f673c80c",4134:"c8ee4f4c",4324:"b14b8aad",4428:"da638a0b",4455:"83a5d44d",4567:"54670822",4583:"c0d080f8",4720:"c917b030",4739:"c5d6c585",5049:"7f13b97c",5116:"fdf9e212",5244:"781ca251",5394:"83d77ce3",5484:"d4914f64",5742:"08d6695f",6034:"caf9c56a",6061:"fc18f174",6442:"781043c7",6489:"220eb75c",6631:"5c62f77c",6688:"86f0bb7d",6740:"cb761d32",6744:"06531b51",6797:"fcf07327",6969:"4f11b87f",7098:"c4e87eeb",7238:"2f7f6030",7700:"3e9d1cd2",7806:"2e29eee5",7837:"29a62b07",8088:"86ec4aae",8115:"87197947",8275:"0e428c82",8345:"6b94864e",8356:"c82fecf7",8401:"3769c7ca",8472:"e95c69f1",8913:"0680f2c1",8945:"c675170a",8969:"72d617ac",9048:"5d6981a0",9145:"5da5e3bf",9462:"be2eb63e",9525:"46840ba1",9556:"4560cd89",9593:"46491a17",9647:"e4c313e0",9706:"bf0d727a"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},r="portal:",b.l=(e,a,t,d)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pt/",b.gca=function(e){return e={14175527:"2975",17896441:"8401","7414882c":"568","5453af66":"653","05a6e5eb":"1000","5b21eb5b":"1073","6a53963f":"1150","637d1e43":"1206",a7456010:"1235","2ff9f15f":"1246",e64716c7:"1330","4b374b1c":"1613","0f607e68":"2173",f8ece6c6:"2499","7a87b078":"2591","81a80031":"2801","238d2612":"2815","623420e1":"2978","0f768022":"3750",cf0bae56:"3853","393be207":"4134","6945023b":"4428","1a68e964":"4455","4ff510f0":"4567","1df93b7f":"4583","1d290942":"4720",a0ccf6a6:"4739","2c7e9cf0":"5116","7c84b674":"5244",a7c1348b:"5484",aba21aa0:"5742",a9392d3d:"6034","1f391b9e":"6061",b5b41e46:"6442","3878d6a7":"6489",e83dc2a6:"6631","8e8980be":"6740",d1a2a840:"6744","99eeb480":"6797","14eb3368":"6969",a7bd4aaa:"7098","5a04c05e":"7238",a0e5e030:"7700","3778cde8":"7806","9afbf091":"7837",c315e93d:"8088",e703806e:"8115","297df787":"8275",e26024d7:"8345",a03666e8:"8356","5e3aacc0":"8472","095d206d":"8945","70fdb4e0":"8969",a94703ab:"9048",d5e150a1:"9145","35b0986e":"9525",d2a252f3:"9556","15769cf5":"9593","5e95c892":"9647","2f7803b9":"9706"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,t)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)t.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((t,r)=>f=e[a]=[t,r]));t.push(f[2]=r);var d=b.p+b.u(a),c=new Error;b.l(d,(t=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var r=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",c.name="ChunkLoadError",c.type=r,c.request=d,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,t)=>{var f,r,d=t[0],c=t[1],o=t[2],n=0;if(d.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(t);n{"use strict";var e,a,t,r,d,f={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return f[e].call(t.exports,t,t.exports,b),t.exports}b.m=f,e=[],b.O=(a,t,r,d)=>{if(!t){var f=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](t[o])))?t.splice(o--,1):(c=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[t,r,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var f={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,b.d(d,f),d},b.d=(e,a)=>{for(var t in a)b.o(a,t)&&!b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,t)=>(b.f[t](e,a),a)),[])),b.u=e=>"assets/js/"+({568:"7414882c",653:"5453af66",1e3:"05a6e5eb",1073:"5b21eb5b",1150:"6a53963f",1206:"637d1e43",1235:"a7456010",1246:"2ff9f15f",1330:"e64716c7",1613:"4b374b1c",2173:"0f607e68",2499:"f8ece6c6",2591:"7a87b078",2801:"81a80031",2815:"238d2612",2975:"14175527",2978:"623420e1",3750:"0f768022",3853:"cf0bae56",4134:"393be207",4428:"6945023b",4455:"1a68e964",4567:"4ff510f0",4583:"1df93b7f",4720:"1d290942",4739:"a0ccf6a6",5116:"2c7e9cf0",5244:"7c84b674",5484:"a7c1348b",5742:"aba21aa0",6034:"a9392d3d",6061:"1f391b9e",6442:"b5b41e46",6489:"3878d6a7",6631:"e83dc2a6",6740:"8e8980be",6744:"d1a2a840",6797:"99eeb480",6969:"14eb3368",7098:"a7bd4aaa",7238:"5a04c05e",7700:"a0e5e030",7806:"3778cde8",7837:"9afbf091",8088:"c315e93d",8115:"e703806e",8275:"297df787",8345:"e26024d7",8356:"a03666e8",8401:"17896441",8472:"5e3aacc0",8945:"095d206d",8969:"70fdb4e0",9048:"a94703ab",9145:"d5e150a1",9525:"35b0986e",9556:"d2a252f3",9593:"15769cf5",9647:"5e95c892",9706:"2f7803b9"}[e]||e)+"."+{568:"f1d8d464",653:"1626d7a2",1e3:"11ba548e",1073:"743d5175",1150:"e81ae72b",1206:"2e519de2",1235:"deb810c9",1246:"f82dade5",1330:"e1b2a6bb",1613:"f4f2b693",1688:"433c2b5b",2173:"265ab4b5",2237:"c851d8b1",2440:"ecd0621f",2499:"cb5361c6",2591:"6d853e08",2801:"80b2de7f",2815:"c9df1f01",2975:"3097f1ee",2978:"07d4f3ba",3750:"8430ac10",3853:"f0cace21",4134:"c8ee4f4c",4324:"b14b8aad",4428:"da638a0b",4455:"83a5d44d",4567:"54670822",4583:"c0d080f8",4720:"c917b030",4739:"c5d6c585",5049:"7f13b97c",5116:"fdf9e212",5244:"781ca251",5394:"83d77ce3",5484:"d4914f64",5742:"08d6695f",6034:"caf9c56a",6061:"fc18f174",6442:"781043c7",6489:"220eb75c",6631:"5c62f77c",6688:"86f0bb7d",6740:"cb761d32",6744:"06531b51",6797:"fcf07327",6969:"4f11b87f",7098:"c4e87eeb",7238:"2f7f6030",7700:"3e9d1cd2",7806:"2e29eee5",7837:"29a62b07",8088:"21946233",8115:"87197947",8275:"0e428c82",8345:"6b94864e",8356:"c82fecf7",8401:"3769c7ca",8472:"e95c69f1",8913:"0680f2c1",8945:"c675170a",8969:"72d617ac",9048:"5d6981a0",9145:"5da5e3bf",9462:"be2eb63e",9525:"46840ba1",9556:"4560cd89",9593:"46491a17",9647:"e4c313e0",9706:"63a21695"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},d="portal:",b.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var c,o;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),d&&d.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pt/",b.gca=function(e){return e={14175527:"2975",17896441:"8401","7414882c":"568","5453af66":"653","05a6e5eb":"1000","5b21eb5b":"1073","6a53963f":"1150","637d1e43":"1206",a7456010:"1235","2ff9f15f":"1246",e64716c7:"1330","4b374b1c":"1613","0f607e68":"2173",f8ece6c6:"2499","7a87b078":"2591","81a80031":"2801","238d2612":"2815","623420e1":"2978","0f768022":"3750",cf0bae56:"3853","393be207":"4134","6945023b":"4428","1a68e964":"4455","4ff510f0":"4567","1df93b7f":"4583","1d290942":"4720",a0ccf6a6:"4739","2c7e9cf0":"5116","7c84b674":"5244",a7c1348b:"5484",aba21aa0:"5742",a9392d3d:"6034","1f391b9e":"6061",b5b41e46:"6442","3878d6a7":"6489",e83dc2a6:"6631","8e8980be":"6740",d1a2a840:"6744","99eeb480":"6797","14eb3368":"6969",a7bd4aaa:"7098","5a04c05e":"7238",a0e5e030:"7700","3778cde8":"7806","9afbf091":"7837",c315e93d:"8088",e703806e:"8115","297df787":"8275",e26024d7:"8345",a03666e8:"8356","5e3aacc0":"8472","095d206d":"8945","70fdb4e0":"8969",a94703ab:"9048",d5e150a1:"9145","35b0986e":"9525",d2a252f3:"9556","15769cf5":"9593","5e95c892":"9647","2f7803b9":"9706"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,t)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((t,d)=>r=e[a]=[t,d]));t.push(r[2]=d);var f=b.p+b.u(a),c=new Error;b.l(f,(t=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+d+": "+f+")",c.name="ChunkLoadError",c.type=d,c.request=f,r[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,t)=>{var r,d,f=t[0],c=t[1],o=t[2],n=0;if(f.some((a=>0!==e[a]))){for(r in c)b.o(c,r)&&(b.m[r]=c[r]);if(o)var i=o(b)}for(a&&a(t);n - + diff --git a/pt/develop/auto-sdk/auto-id/index.html b/pt/develop/auto-sdk/auto-id/index.html index 2b6079ef3cd..2d455e341b6 100644 --- a/pt/develop/auto-sdk/auto-id/index.html +++ b/pt/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/consensus/index.html b/pt/develop/auto-sdk/consensus/index.html index 2db28329a96..52107b29202 100644 --- a/pt/develop/auto-sdk/consensus/index.html +++ b/pt/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/drive/index.html b/pt/develop/auto-sdk/drive/index.html index c541492bf0c..7d28500bd24 100644 --- a/pt/develop/auto-sdk/drive/index.html +++ b/pt/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/index.html b/pt/develop/auto-sdk/index.html index 03245c84012..170f7438c31 100644 --- a/pt/develop/auto-sdk/index.html +++ b/pt/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/intro/index.html b/pt/develop/auto-sdk/intro/index.html index a18bbf6bc44..c66800b9d89 100644 --- a/pt/develop/auto-sdk/intro/index.html +++ b/pt/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/utils/index.html b/pt/develop/auto-sdk/utils/index.html index 89fd53297bb..92b13323971 100644 --- a/pt/develop/auto-sdk/utils/index.html +++ b/pt/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/xdm/index.html b/pt/develop/auto-sdk/xdm/index.html index 96c3c33d487..31e78119aaa 100644 --- a/pt/develop/auto-sdk/xdm/index.html +++ b/pt/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/intro/index.html b/pt/develop/intro/index.html index 4ca83df792f..93b2275932c 100644 --- a/pt/develop/intro/index.html +++ b/pt/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/block-explorer/index.html b/pt/develop/nova/block-explorer/index.html index b42079f86bc..3090340c094 100644 --- a/pt/develop/nova/block-explorer/index.html +++ b/pt/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/faucet/index.html b/pt/develop/nova/faucet/index.html index d36d4e2b44b..868842fed66 100644 --- a/pt/develop/nova/faucet/index.html +++ b/pt/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/general/index.html b/pt/develop/nova/general/index.html index 41f7492518b..c2ae9b44812 100644 --- a/pt/develop/nova/general/index.html +++ b/pt/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/foundry/index.html b/pt/develop/nova/guides/foundry/index.html index 703a5f917da..189cae2678e 100644 --- a/pt/develop/nova/guides/foundry/index.html +++ b/pt/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/hardhat/index.html b/pt/develop/nova/guides/hardhat/index.html index 44a497a2b2f..bc48d6aff1f 100644 --- a/pt/develop/nova/guides/hardhat/index.html +++ b/pt/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/local-development/index.html b/pt/develop/nova/guides/local-development/index.html index 2fe747dda75..05d1f286b60 100644 --- a/pt/develop/nova/guides/local-development/index.html +++ b/pt/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/remix/index.html b/pt/develop/nova/guides/remix/index.html index 4800a138f92..57133db49e6 100644 --- a/pt/develop/nova/guides/remix/index.html +++ b/pt/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/index.html b/pt/develop/nova/index.html index d572bcb9c96..0272a4348d6 100644 --- a/pt/develop/nova/index.html +++ b/pt/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/introduction/index.html b/pt/develop/nova/introduction/index.html index 7ed8870a3cb..8226fea8e44 100644 --- a/pt/develop/nova/introduction/index.html +++ b/pt/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/metamask/index.html b/pt/develop/nova/metamask/index.html index 21cbdb09bcd..ee857870efa 100644 --- a/pt/develop/nova/metamask/index.html +++ b/pt/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/cluster/index.html b/pt/farming/advanced-cli/cluster/index.html index 07f2959de1d..c63fa735c4a 100644 --- a/pt/farming/advanced-cli/cluster/index.html +++ b/pt/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/install/index.html b/pt/farming/advanced-cli/install/index.html index 9081961a55d..fe5fefc3878 100644 --- a/pt/farming/advanced-cli/install/index.html +++ b/pt/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/pt/farming/advanced-cli/taurus/index.html b/pt/farming/advanced-cli/taurus/index.html index 7387c7d9433..0f9d88862fc 100644 --- a/pt/farming/advanced-cli/taurus/index.html +++ b/pt/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/tips/index.html b/pt/farming/advanced-cli/tips/index.html index 7275caef0d7..fff57e6ddf1 100644 --- a/pt/farming/advanced-cli/tips/index.html +++ b/pt/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/common-problems/index.html b/pt/farming/common-problems/index.html index 03bfe6cea32..9add69e664d 100644 --- a/pt/farming/common-problems/index.html +++ b/pt/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/pt/farming/guides/gpu-plotter/index.html b/pt/farming/guides/gpu-plotter/index.html index 168eebd77fb..904f98ecd74 100644 --- a/pt/farming/guides/gpu-plotter/index.html +++ b/pt/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/grafana-dashboard/index.html b/pt/farming/guides/grafana-dashboard/index.html index 2ec8432984a..b6b395b27c2 100644 --- a/pt/farming/guides/grafana-dashboard/index.html +++ b/pt/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/index.html b/pt/farming/guides/index.html index 11cce156e2b..050c7ee4aa6 100644 --- a/pt/farming/guides/index.html +++ b/pt/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/port-config/index.html b/pt/farming/guides/port-config/index.html index f31c330decc..2ed0c8718b3 100644 --- a/pt/farming/guides/port-config/index.html +++ b/pt/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/verified-farmer/index.html b/pt/farming/guides/verified-farmer/index.html index 86f86d4a6f3..04d56e335ed 100644 --- a/pt/farming/guides/verified-farmer/index.html +++ b/pt/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/intro/index.html b/pt/farming/intro/index.html index 8825e9f7169..28d7599139e 100644 --- a/pt/farming/intro/index.html +++ b/pt/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/space-acres/install/index.html b/pt/farming/space-acres/install/index.html index 366968a4aea..7e4f04563f1 100644 --- a/pt/farming/space-acres/install/index.html +++ b/pt/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/space-acres/translate/index.html b/pt/farming/space-acres/translate/index.html index 1c1459dcc26..aab273df1bc 100644 --- a/pt/farming/space-acres/translate/index.html +++ b/pt/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/timekeeper/index.html b/pt/farming/timekeeper/index.html index e0dbf2cc8b8..da71e44dddc 100644 --- a/pt/farming/timekeeper/index.html +++ b/pt/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/index.html b/pt/index.html index d5b5f920c67..c89663de362 100644 --- a/pt/index.html +++ b/pt/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/academy/index.html b/pt/learn/academy/index.html index 06dbe4ef00a..27e44b19196 100644 --- a/pt/learn/academy/index.html +++ b/pt/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/intro/index.html b/pt/learn/intro/index.html index 5ed58eae097..e5e610db127 100644 --- a/pt/learn/intro/index.html +++ b/pt/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/security/index.html b/pt/learn/security/index.html index 337dc24f8ff..9283cae61fb 100644 --- a/pt/learn/security/index.html +++ b/pt/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/markdown-page/index.html b/pt/markdown-page/index.html index 1f1600793a5..cda7d5b8b08 100644 --- a/pt/markdown-page/index.html +++ b/pt/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/community/resources/index.html b/pt/participate/community/resources/index.html index fd0e77c9c77..d1878a2474c 100644 --- a/pt/participate/community/resources/index.html +++ b/pt/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/community/tools/index.html b/pt/participate/community/tools/index.html index 513e17b858d..9e37c9de509 100644 --- a/pt/participate/community/tools/index.html +++ b/pt/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/code-of-conduct/index.html b/pt/participate/contribute/code-of-conduct/index.html index c6e6b6f9216..dcd2c50e84e 100644 --- a/pt/participate/contribute/code-of-conduct/index.html +++ b/pt/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/intro/index.html b/pt/participate/contribute/intro/index.html index fa977d3991c..756e5dea4a0 100644 --- a/pt/participate/contribute/intro/index.html +++ b/pt/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/translate/index.html b/pt/participate/contribute/translate/index.html index aba15555034..7d4a403ae99 100644 --- a/pt/participate/contribute/translate/index.html +++ b/pt/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/intro/index.html b/pt/staking/intro/index.html index 799dcba7a6e..c23093550ea 100644 --- a/pt/staking/intro/index.html +++ b/pt/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/operator/deregister/index.html b/pt/staking/operator/deregister/index.html index aeed8aafdfd..c2a099c5cec 100644 --- a/pt/staking/operator/deregister/index.html +++ b/pt/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/operator/register/index.html b/pt/staking/operator/register/index.html index fdecc180543..795fbaeac7f 100644 --- a/pt/staking/operator/register/index.html +++ b/pt/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/pt/staking/operator/tips/index.html b/pt/staking/operator/tips/index.html index cade97eb85b..2bbb41fcf4b 100644 --- a/pt/staking/operator/tips/index.html +++ b/pt/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/stake/index.html b/pt/staking/stake/index.html index e0480ef9fee..d9edc37815b 100644 --- a/pt/staking/stake/index.html +++ b/pt/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/wallets/index.html b/pt/wallets/index.html index 68681cc1aa0..2e852bc3395 100644 --- a/pt/wallets/index.html +++ b/pt/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/wallets/polkadot/index.html b/pt/wallets/polkadot/index.html index 1d5ccbf43df..8c6807e10de 100644 --- a/pt/wallets/polkadot/index.html +++ b/pt/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/wallets/subwallet/index.html b/pt/wallets/subwallet/index.html index 6d63679ca28..55de0127c37 100644 --- a/pt/wallets/subwallet/index.html +++ b/pt/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/404.html b/ru/404.html index 78fc1a10715..af0801aeca1 100644 --- a/ru/404.html +++ b/ru/404.html @@ -12,7 +12,7 @@ - + diff --git a/ru/assets/js/5e15f349.4f32095f.js b/ru/assets/js/5e15f349.0fe2fab4.js similarity index 96% rename from ru/assets/js/5e15f349.4f32095f.js rename to ru/assets/js/5e15f349.0fe2fab4.js index db5c2b2933a..ba290116d24 100644 --- a/ru/assets/js/5e15f349.4f32095f.js +++ b/ru/assets/js/5e15f349.0fe2fab4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1943],{1191:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>R,default:()=>B,frontMatter:()=>O,metadata:()=>E,toc:()=>Z});var a=s(4848),r=s(8453),t=s(1470),o=s(9365),i=s(1432),c=s(8774),l=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",children:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-advanced-cli",children:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0438\u0445 \u0432 ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0444\u0430\u0440\u043c\u0435\u0440\u0430 \u0438 \u043d\u043e\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c\u0438:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0443\u0437\u0435\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0438\u0436\u0435. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e \u0432 \u0412\u0430\u0448\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0444\u0435\u0440\u043c\u044b",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e \u0432 \u0412\u0430\u0448\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u0442\u0435\u043f\u0435\u0440\u044c-\u0432\u044b-\u0444\u0430\u0440\u043c\u0438\u0442\u0435",children:"\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u044b \u0444\u0430\u0440\u043c\u0438\u0442\u0435!"}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",children:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,r.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var j=s(6540);const y="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",A="compose-generator-form__group_Jx8k",S="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,j.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[r,t]=(0,j.useState)(""),[o,c]=(0,j.useState)([]),[l,d]=(0,j.useState)({}),[u,m]=(0,j.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,j.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),c(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const r=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(r).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;t(n),d({})}else d(r);else d({...r,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${y} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:r,name:t}=n;return(0,a.jsxs)("div",{className:A,children:[(0,a.jsxs)("label",{htmlFor:t,className:`text--bold ${w} ${u.includes(t)?S:""}`,onMouseEnter:()=>h(t),onAnimationEnd:()=>p(t),children:[r,":"]}),(0,a.jsx)("input",{className:_,name:t,placeholder:r,onChange:f,value:e[t]}),l[t]&&(0,a.jsx)("p",{className:I,children:l[t]})]},t)})),(0,a.jsxs)("div",{className:A,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?S:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${A} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:r})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",children:"\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0412\u0430\u0448\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \xab\u0421\u043e\u0437\u0434\u0430\u0442\u044c\xbb.\n\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e!"}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435-\u043f\u043e\u043b\u0435\u0439-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",children:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-3-\u0437\u0430\u043f\u0443\u0441\u043a-docker-compose",children:"\u0428\u0430\u0433 3: \u0417\u0430\u043f\u0443\u0441\u043a Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 ",(0,a.jsx)(n.code,{children:"subspace"})," \u0438 \u0432 \u043d\u0435\u043c \u0444\u0430\u0439\u043b ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"}),". \u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0444\u0430\u0439\u043b."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", \u0430 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",sidebar_position:1,description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0424\u0435\u0440\u043c\u0435\u0440","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","CLI","Binaries","Docker"]},R=void 0,E={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ru/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",sidebar_position:1,description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0424\u0435\u0440\u043c\u0435\u0440","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443",permalink:"/ru/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ru/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI",id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",level:2},{value:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b Advanced CLI",id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-advanced-cli",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u044b \u0444\u0430\u0440\u043c\u0438\u0442\u0435!",id:"\u0442\u0435\u043f\u0435\u0440\u044c-\u0432\u044b-\u0444\u0430\u0440\u043c\u0438\u0442\u0435",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI",id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",id:"\u0448\u0430\u0433-1-\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",level:2},{value:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435-\u043f\u043e\u043b\u0435\u0439-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",level:2},{value:"\u0428\u0430\u0433 3: \u0417\u0430\u043f\u0443\u0441\u043a Docker Compose",id:"\u0448\u0430\u0433-3-\u0437\u0430\u043f\u0443\u0441\u043a-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 Intel Skylake \u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 AMD Ryzen \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u041f\u041a, \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441 2015 \u0433\u043e\u0434\u0430."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"\u041d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 (x86-64-v2):"})," \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f Intel Broadwell, Haswell \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0445 AMD \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441 2009 \u043f\u043e 2015 \u0433\u043e\u0434, \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Skylake."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0436\u0438\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b ",(0,a.jsx)(n.strong,{children:"\u0420\u0435\u043b\u0438\u0437\u044b"})," \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0437\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Subspace."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Subspace-farmer"}),": \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c, \u043f\u0435\u0440\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c \u0438 \u043d\u0430\u0433\u0440\u0430\u0434\u0430\u043c\u0438 \u0437\u0430 \u0444\u0430\u0440\u043c\u0438\u043d\u0433."]}),"\n"]}),"\n",(0,a.jsxs)(t.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"\u041f\u043b\u043e\u0442\u0442\u0438\u043d\u0433"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const r={tabItem:"tabItem_Ymn6"};var t=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(r.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),r=s(8215),t=s(3104),o=s(6347),i=s(205),c=s(7485),l=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:r}}=e;return{value:n,label:s,attributes:a,default:r}}))}(s);return function(e){const n=(0,l.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const r=(0,o.W6)(),t=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(t),(0,a.useCallback)((e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})}),[t,r])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,t=m(e),[o,c]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:t}))),[l,u]=p({queryString:s,groupId:r}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,t]=(0,d.Dv)(s);return[r,(0,a.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:r}),f=(()=>{const e=l??x;return h({value:e,tabValues:t})?e:null})();(0,i.A)((()=>{f&&c(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),b(e)}),[u,b,t]),tabValues:t}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function j(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:l}=(0,t.a_)(),d=e=>{const n=e.currentTarget,s=c.indexOf(n),r=i[s].value;r!==a&&(l(n),o(r))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:t}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:u,onClick:d,...t,className:(0,r.A)("tabs__item",f.tabItem,t?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:t}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,g.jsx)(j,{...n,...e}),(0,g.jsx)(y,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),r=s(1432);const t={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[c,l]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const r=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(r).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;l(s)})(),u({})):u(r):u({...r,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},j=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${t["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${t["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:t["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(r),onAnimationEnd:()=>x(r),children:[a,":"]}),(0,o.jsx)("input",{className:t["systemd-service-generator-form__input"],name:r,placeholder:a,onChange:g,value:e[r]}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(r),onAnimationEnd:()=>x(r),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${t["systemd-service-generator-form__checkbox"]} ${t["systemd-service-generator-form__input"]}`,name:r,onChange:j,type:"checkbox",checked:"on"===e[r]?"checked":""}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)}))]}),(0,o.jsx)("div",{className:`${t["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${t["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-farmer.service",children:c})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1943],{1191:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>R,default:()=>B,frontMatter:()=>O,metadata:()=>E,toc:()=>Z});var a=s(4848),r=s(8453),t=s(1470),o=s(9365),i=s(1432),c=s(8774),l=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",children:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-advanced-cli",children:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0438\u0445 \u0432 ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0444\u0430\u0440\u043c\u0435\u0440\u0430 \u0438 \u043d\u043e\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c\u0438:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0443\u0437\u0435\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0438\u0436\u0435. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e \u0432 \u0412\u0430\u0448\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0444\u0435\u0440\u043c\u044b",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e \u0432 \u0412\u0430\u0448\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u0442\u0435\u043f\u0435\u0440\u044c-\u0432\u044b-\u0444\u0430\u0440\u043c\u0438\u0442\u0435",children:"\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u044b \u0444\u0430\u0440\u043c\u0438\u0442\u0435!"}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",children:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,r.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var j=s(6540);const y="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",A="compose-generator-form__group_Jx8k",S="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,j.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[r,t]=(0,j.useState)(""),[o,c]=(0,j.useState)([]),[l,d]=(0,j.useState)({}),[u,m]=(0,j.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,j.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),c(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const r=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(r).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;t(n),d({})}else d(r);else d({...r,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${y} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:r,name:t}=n;return(0,a.jsxs)("div",{className:A,children:[(0,a.jsxs)("label",{htmlFor:t,className:`text--bold ${w} ${u.includes(t)?S:""}`,onMouseEnter:()=>h(t),onAnimationEnd:()=>p(t),children:[r,":"]}),(0,a.jsx)("input",{className:_,name:t,placeholder:r,onChange:f,value:e[t]}),l[t]&&(0,a.jsx)("p",{className:I,children:l[t]})]},t)})),(0,a.jsxs)("div",{className:A,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?S:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${A} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:r})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-1-\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",children:"\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0412\u0430\u0448\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \xab\u0421\u043e\u0437\u0434\u0430\u0442\u044c\xbb.\n\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e!"}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435-\u043f\u043e\u043b\u0435\u0439-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",children:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"\u0448\u0430\u0433-3-\u0437\u0430\u043f\u0443\u0441\u043a-docker-compose",children:"\u0428\u0430\u0433 3: \u0417\u0430\u043f\u0443\u0441\u043a Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"}),"."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 ",(0,a.jsx)(n.code,{children:"subspace"})," \u0438 \u0432 \u043d\u0435\u043c \u0444\u0430\u0439\u043b ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"}),". \u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0444\u0430\u0439\u043b."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c."]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", \u0430 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0438\u0442\u0430\u0439\u0442\u0435 ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",sidebar_position:1,description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0424\u0435\u0440\u043c\u0435\u0440","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","CLI","Binaries","Docker"]},R=void 0,E={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/ru/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430",sidebar_position:1,description:"\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0440\u043c\u0435\u0440 \u0441\u0435\u0442\u0438 Autonomys \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["\u0424\u0435\u0440\u043c\u0435\u0440","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443",permalink:"/ru/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/ru/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI",id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",level:2},{value:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b Advanced CLI",id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-advanced-cli",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"\u0422\u0435\u043f\u0435\u0440\u044c \u0412\u044b \u0444\u0430\u0440\u043c\u0438\u0442\u0435!",id:"\u0442\u0435\u043f\u0435\u0440\u044c-\u0432\u044b-\u0444\u0430\u0440\u043c\u0438\u0442\u0435",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"\u0428\u0430\u0433 1: \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Advanced CLI",id:"\u0448\u0430\u0433-1-\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430-\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445-\u0444\u0430\u0439\u043b\u043e\u0432-advanced-cli",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",id:"\u0448\u0430\u0433-1-\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439",level:2},{value:"\u0428\u0430\u0433 2: \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",id:"\u0448\u0430\u0433-2-\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435-\u043f\u043e\u043b\u0435\u0439-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430",level:2},{value:"\u0428\u0430\u0433 3: \u0417\u0430\u043f\u0443\u0441\u043a Docker Compose",id:"\u0448\u0430\u0433-3-\u0437\u0430\u043f\u0443\u0441\u043a-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 Intel Skylake \u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 AMD Ryzen \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u041f\u041a, \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441 2015 \u0433\u043e\u0434\u0430."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"\u041d\u0430\u0441\u043b\u0435\u0434\u0438\u0435 (x86-64-v2):"})," \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f Intel Broadwell, Haswell \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u0445 AMD \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441 2009 \u043f\u043e 2015 \u0433\u043e\u0434, \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Skylake."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0436\u0438\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b ",(0,a.jsx)(n.strong,{children:"\u0420\u0435\u043b\u0438\u0437\u044b"})," \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0437\u043b\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Subspace."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Subspace-farmer"}),": \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c, \u043f\u0435\u0440\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435\u043c \u0438 \u043d\u0430\u0433\u0440\u0430\u0434\u0430\u043c\u0438 \u0437\u0430 \u0444\u0430\u0440\u043c\u0438\u043d\u0433."]}),"\n"]}),"\n",(0,a.jsxs)(t.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"\u041f\u043b\u043e\u0442\u0442\u0438\u043d\u0433"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const r={tabItem:"tabItem_Ymn6"};var t=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(r.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),r=s(8215),t=s(3104),o=s(6347),i=s(205),c=s(7485),l=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:r}}=e;return{value:n,label:s,attributes:a,default:r}}))}(s);return function(e){const n=(0,l.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const r=(0,o.W6)(),t=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(t),(0,a.useCallback)((e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})}),[t,r])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,t=m(e),[o,c]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:t}))),[l,u]=p({queryString:s,groupId:r}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,t]=(0,d.Dv)(s);return[r,(0,a.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:r}),f=(()=>{const e=l??x;return h({value:e,tabValues:t})?e:null})();(0,i.A)((()=>{f&&c(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),b(e)}),[u,b,t]),tabValues:t}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function j(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:l}=(0,t.a_)(),d=e=>{const n=e.currentTarget,s=c.indexOf(n),r=i[s].value;r!==a&&(l(n),o(r))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:t}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:u,onClick:d,...t,className:(0,r.A)("tabs__item",f.tabItem,t?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function y(e){let{lazy:n,children:s,selectedValue:t}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,r.A)("tabs-container",f.tabList),children:[(0,g.jsx)(j,{...n,...e}),(0,g.jsx)(y,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),r=s(1432);const t={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[c,l]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const r=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(r).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;l(s)})(),u({})):u(r):u({...r,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},j=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${t["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${t["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:t["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(r),onAnimationEnd:()=>x(r),children:[a,":"]}),(0,o.jsx)("input",{className:t["systemd-service-generator-form__input"],name:r,placeholder:a,onChange:g,value:e[r]}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(r),onAnimationEnd:()=>x(r),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${t["systemd-service-generator-form__checkbox"]} ${t["systemd-service-generator-form__input"]}`,name:r,onChange:j,type:"checkbox",checked:"on"===e[r]?"checked":""}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)}))]}),(0,o.jsx)("div",{className:`${t["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${t["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-farmer.service",children:c})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/ru/assets/js/9bd3b2e9.d5041d59.js b/ru/assets/js/9bd3b2e9.3cea3d09.js similarity index 98% rename from ru/assets/js/9bd3b2e9.d5041d59.js rename to ru/assets/js/9bd3b2e9.3cea3d09.js index 379f1976876..33f792f34b2 100644 --- a/ru/assets/js/9bd3b2e9.d5041d59.js +++ b/ru/assets/js/9bd3b2e9.3cea3d09.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8131],{6659:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>f,contentTitle:()=>b,default:()=>A,frontMatter:()=>m,metadata:()=>j,toc:()=>y});var a=t(4848),s=t(8453),r=t(1470),i=t(9365),o=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function x(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function g(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(x,{...e})}):x(e)}const m={title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",sidebar_position:1,description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f"]},b=void 0,j={id:"farming-&-staking/staking/operators/register-operator",title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ru/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",sidebar_position:1,description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f"]},sidebar:"tutorialSidebar",previous:{title:"\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u044f \u043a \u0440\u0430\u0431\u043e\u0442\u0435",permalink:"/ru/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ru/staking/operator/deregister"}},f={},y=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430",id:"\u0432\u044b\u0431\u043e\u0440-\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e-\u0434\u043e\u043c\u0435\u043d\u0430",level:3},{value:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",id:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c-\u043a\u043b\u044e\u0447-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",level:3},{value:"\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430",id:"\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0434\u043e\u043c\u0435\u043d\u0430",level:3},{value:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0434\u043e\u043c\u0435\u043d\u0435",id:"\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0432-\u0434\u043e\u043c\u0435\u043d\u0435",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function v(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(i.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(i.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(i.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(g,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"\u0432\u044b\u0431\u043e\u0440-\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e-\u0434\u043e\u043c\u0435\u043d\u0430",children:"\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430. Stake Wars \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u044b \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 0 (\u041d\u043e\u0432\u0430) \u0438 1 (\u0410\u0432\u0442\u043eID).\n\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0437\u043b\u0430."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u041b\u044e\u0431\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0441 ",(0,a.jsx)(n.strong,{children:"\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"})," \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c."]})}),"\n",(0,a.jsx)(n.h3,{id:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c-\u043a\u043b\u044e\u0447-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043d\u0443\u0436\u043d\u0430 \u043f\u0430\u0440\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432."}),"\n",(0,a.jsxs)(n.p,{children:["\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0431\u0430\u0437\u0443 ",(0,a.jsx)(n.strong,{children:"--base-path"})," \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0443\u0437\u0435\u043b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 ",(0,a.jsx)(n.strong,{children:"--domain-id"})," \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0441\u0442\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0438\u0441\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"\u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0443\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0444\u0440\u0430\u0437\u0443. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0442\u0435\u0447\u043a\u0438 \u0438\u043b\u0438 \u043a\u0440\u0430\u0436\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043d\u043e\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043d\u0438\u0436\u0435\u043d\u044b."})}),"\n",(0,a.jsxs)(n.p,{children:["\u041a\u043b\u044e\u0447\u0438 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435, \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a."]}),"\n",(0,a.jsx)(n.h3,{id:"\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0434\u043e\u043c\u0435\u043d\u0430",children:"\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041d\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u043e\u0434\u043e\u0439 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043a \u0434\u043b\u044f \u043d\u043e\u0434\u044b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0442 \u043d\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432; \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u0438\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u0431\u043b\u043e\u043a \u0437\u0430 \u0431\u043b\u043e\u043a\u043e\u043c."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:'\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e "\u0441\u0442\u0435\u0440\u0435\u0442\u044c" \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0443\u0437\u0435\u043b \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 genesis \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f snap sync, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.\n\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438.'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 ",(0,a.jsx)(n.code,{children:"your_domain_id"})," \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0438 ",(0,a.jsx)(n.code,{children:"your_operator_id"})," \u043d\u0430 \u0432\u0430\u0448 operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 ",(0,a.jsx)(n.code,{children:"your_operator_id"})," \u043f\u043e\u043a\u0430 \u0432\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0435 \u0443\u0437\u0435\u043b, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(i.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(o.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043d\u043e\u0434\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0432-\u0434\u043e\u043c\u0435\u043d\u0435",children:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0434\u043e\u043c\u0435\u043d\u0435"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u043e\u0448\u0435\u043b\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a ",(0,a.jsx)(n.strong,{children:"Subwallet"}),", \u0442\u0430\u043a \u0438 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0438 ",(0,a.jsx)(n.strong,{children:"PolkadotJS"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0412\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0443."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0438 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 (\u0437\u0430\u0441\u0442\u0435\u0439\u043a\u0430\u043d\u043d\u044b\u0435) \u0431\u0430\u043b\u0430\u043d\u0441\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 ",(0,a.jsx)(n.code,{children:"domainId"}),", \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0414\u043b\u044f Stake Wars, Nova \u044d\u0442\u043e \u0434\u043e\u043c\u0435\u043d 0 \u0438 \u0410\u0432\u0442\u043e ID \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u043c\u0435\u043d 1, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"N-nominators-7",src:t(6968).A+"",width:"499",height:"309"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u0430\u0436\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Stake Wars \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 seed \u0444\u0440\u0430\u0437\u044b \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430.",(0,a.jsx)(n.br,{}),"\n","\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0430\u0448 seed \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),", \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c Proof \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e seed \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0444\u0440\u0430\u0437\u0443.\n\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442 \u043f\u043e\u043b\u044f \xab\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430\xbb \u0438 \xab\u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043a\u043b\u044e\u0447\u0430\xbb. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0443\u043c\u043c\u0443 \xabAmount to Stake\xbb, \xabNominator Tax\xbb, \xabMinimum Nominator Stake\xbb \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \xab\u0414\u0430\u043b\u0435\u0435\xbb."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c Minimum Nominator Stake \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"})})," \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0444\u0440\u0430\u0437\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043a\u043b\u044e\u0447\u0430."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c, \u0432\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a ",(0,a.jsx)(n.strong,{children:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440"}),"! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u041c\u043e\u0438\u043c \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u0435\u043d\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0430\u0448\u0430 \u0441\u0443\u043c\u043c\u0430 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043f\u0438\u043a\u0435\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0443\u0437\u0435\u043b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"}),"."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 ",(0,a.jsx)(n.code,{children:"action"})," \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0434\u043e\u043b\u044e (\u043d\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c), \u0441\u043d\u044f\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0438 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430."]})})]})}function A(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(v,{...e})}):v(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>i});t(6540);var a=t(8215);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,i),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var a=t(6540),s=t(8215),r=t(3104),i=t(6347),o=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:t}=e;const s=(0,i.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=h(e),[i,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=x({queryString:t,groupId:s}),[g,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,d.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),b=(()=>{const e=c??g;return p({value:e,tabValues:r})?e:null})();(0,o.A)((()=>{b&&l(b)}),[b]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function f(e){let{className:n,block:t,selectedValue:a,selectValue:i,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==a&&(c(n),i(s))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,s.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function y(e){let{lazy:n,children:t,selectedValue:r}=e;const i=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=g(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",b.tabList),children:[(0,j.jsx)(f,{...n,...e}),(0,j.jsx)(y,{...n,...e})]})}function A(e){const n=(0,m.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6968:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/N-Nominators-7-cb4641dea42fb7e19530468e2c57cf23.png"},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8131],{6659:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>f,contentTitle:()=>b,default:()=>A,frontMatter:()=>m,metadata:()=>j,toc:()=>y});var a=t(4848),s=t(8453),r=t(1470),i=t(9365),o=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function x(e){const n={h3:"h3",hr:"hr",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function g(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(x,{...e})}):x(e)}const m={title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",sidebar_position:1,description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f"]},b=void 0,j={id:"farming-&-staking/staking/operators/register-operator",title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/ru/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",sidebar_position:1,description:"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f"]},sidebar:"tutorialSidebar",previous:{title:"\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u044f \u043a \u0440\u0430\u0431\u043e\u0442\u0435",permalink:"/ru/staking/intro"},next:{title:"Deregister an Operator",permalink:"/ru/staking/operator/deregister"}},f={},y=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430",id:"\u0432\u044b\u0431\u043e\u0440-\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e-\u0434\u043e\u043c\u0435\u043d\u0430",level:3},{value:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",id:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c-\u043a\u043b\u044e\u0447-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",level:3},{value:"\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430",id:"\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0434\u043e\u043c\u0435\u043d\u0430",level:3},{value:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0434\u043e\u043c\u0435\u043d\u0435",id:"\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0432-\u0434\u043e\u043c\u0435\u043d\u0435",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function v(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(i.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(i.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(i.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(g,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"\u0432\u044b\u0431\u043e\u0440-\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e-\u0434\u043e\u043c\u0435\u043d\u0430",children:"\u0412\u044b\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0430. Stake Wars \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043e\u043c\u0435\u043d\u044b \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 0 (\u041d\u043e\u0432\u0430) \u0438 1 (\u0410\u0432\u0442\u043eID).\n\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0437\u043b\u0430."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u041b\u044e\u0431\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0441 ",(0,a.jsx)(n.strong,{children:"\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"})," \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c."]})}),"\n",(0,a.jsx)(n.h3,{id:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c-\u043a\u043b\u044e\u0447-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430",children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043d\u0443\u0436\u043d\u0430 \u043f\u0430\u0440\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432."}),"\n",(0,a.jsxs)(n.p,{children:["\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0431\u0430\u0437\u0443 ",(0,a.jsx)(n.strong,{children:"--base-path"})," \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0430, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0443\u0437\u0435\u043b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 ",(0,a.jsx)(n.strong,{children:"--domain-id"})," \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0441\u0442\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0438\u0441\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"\u0412\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u0443\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0444\u0440\u0430\u0437\u0443. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0442\u0435\u0447\u043a\u0438 \u0438\u043b\u0438 \u043a\u0440\u0430\u0436\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043d\u043e\u043c\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043d\u0438\u0436\u0435\u043d\u044b."})}),"\n",(0,a.jsxs)(n.p,{children:["\u041a\u043b\u044e\u0447\u0438 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435, \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a."]}),"\n",(0,a.jsx)(n.h3,{id:"\u0437\u0430\u043f\u0443\u0441\u043a-\u043d\u043e\u0434\u044b-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0434\u043e\u043c\u0435\u043d\u0430",children:"\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430"}),"\n",(0,a.jsx)(n.p,{children:"\u041d\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u043e\u0434\u043e\u0439 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u043a \u0434\u043b\u044f \u043d\u043e\u0434\u044b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043d\u043e\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u043c\u0435\u043d\u0430:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u043e\u043c\u0435\u043d\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0442 \u043d\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432; \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0430 \u0438\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u0431\u043b\u043e\u043a \u0437\u0430 \u0431\u043b\u043e\u043a\u043e\u043c."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:'\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e "\u0441\u0442\u0435\u0440\u0435\u0442\u044c" \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0443\u0437\u0435\u043b \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 genesis \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f snap sync, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.\n\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438.'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 ",(0,a.jsx)(n.code,{children:"your_domain_id"})," \u043d\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0438 ",(0,a.jsx)(n.code,{children:"your_operator_id"})," \u043d\u0430 \u0432\u0430\u0448 operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 ",(0,a.jsx)(n.code,{children:"your_operator_id"})," \u043f\u043e\u043a\u0430 \u0432\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0435 \u0443\u0437\u0435\u043b, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(i.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(o.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(i.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(o.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043d\u043e\u0434\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430-\u0432-\u0434\u043e\u043c\u0435\u043d\u0435",children:"\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u0434\u043e\u043c\u0435\u043d\u0435"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u043e\u0448\u0435\u043b\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a ",(0,a.jsx)(n.strong,{children:"Subwallet"}),", \u0442\u0430\u043a \u0438 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0438 ",(0,a.jsx)(n.strong,{children:"PolkadotJS"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0412\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0443."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0438 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 (\u0437\u0430\u0441\u0442\u0435\u0439\u043a\u0430\u043d\u043d\u044b\u0435) \u0431\u0430\u043b\u0430\u043d\u0441\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 ",(0,a.jsx)(n.code,{children:"domainId"}),", \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0414\u043b\u044f Stake Wars, Nova \u044d\u0442\u043e \u0434\u043e\u043c\u0435\u043d 0 \u0438 \u0410\u0432\u0442\u043e ID \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u043c\u0435\u043d 1, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"N-nominators-7",src:t(6968).A+"",width:"499",height:"309"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["\u0412\u0430\u0436\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Stake Wars \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 seed \u0444\u0440\u0430\u0437\u044b \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430.",(0,a.jsx)(n.br,{}),"\n","\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0430\u0448 seed \u0432 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),", \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c Proof \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e seed \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0444\u0440\u0430\u0437\u0443.\n\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442 \u043f\u043e\u043b\u044f \xab\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430\xbb \u0438 \xab\u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439 \u043a\u043b\u044e\u0447\u0430\xbb. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0443\u043c\u043c\u0443 \xabAmount to Stake\xbb, \xabNominator Tax\xbb, \xabMinimum Nominator Stake\xbb \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \xab\u0414\u0430\u043b\u0435\u0435\xbb."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c Minimum Nominator Stake \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0444\u0430\u0439\u043b \u043a\u043b\u044e\u0447\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430"})})," \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u0443\u044e \u0444\u0440\u0430\u0437\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043a\u043b\u044e\u0447\u0430."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c, \u0432\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a ",(0,a.jsx)(n.strong,{children:"\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440"}),"! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u041c\u043e\u0438\u043c \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u0435\u043d\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0430\u0448\u0430 \u0441\u0443\u043c\u043c\u0430 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043f\u0438\u043a\u0435\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0443\u0437\u0435\u043b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"}),"."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 ",(0,a.jsx)(n.code,{children:"action"})," \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0434\u043e\u043b\u044e (\u043d\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c), \u0441\u043d\u044f\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0438 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430."]})})]})}function A(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(v,{...e})}):v(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>i});t(6540);var a=t(8215);const s={tabItem:"tabItem_Ymn6"};var r=t(4848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,i),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>A});var a=t(6540),s=t(8215),r=t(3104),i=t(6347),o=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function x(e){let{queryString:n=!1,groupId:t}=e;const s=(0,i.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=h(e),[i,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=x({queryString:t,groupId:s}),[g,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,d.Dv)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),b=(()=>{const e=c??g;return p({value:e,tabValues:r})?e:null})();(0,o.A)((()=>{b&&l(b)}),[b]);return{selectedValue:i,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(4848);function f(e){let{className:n,block:t,selectedValue:a,selectValue:i,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),s=o[t].value;s!==a&&(c(n),i(s))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,s.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function y(e){let{lazy:n,children:t,selectedValue:r}=e;const i=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=g(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",b.tabList),children:[(0,j.jsx)(f,{...n,...e}),(0,j.jsx)(y,{...n,...e})]})}function A(e){const n=(0,m.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6968:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/N-Nominators-7-cb4641dea42fb7e19530468e2c57cf23.png"},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/ru/assets/js/c9ca25f4.a8782b94.js b/ru/assets/js/c9ca25f4.639e47e3.js similarity index 97% rename from ru/assets/js/c9ca25f4.a8782b94.js rename to ru/assets/js/c9ca25f4.639e47e3.js index d9d5e8daf74..017bde37a42 100644 --- a/ru/assets/js/c9ca25f4.a8782b94.js +++ b/ru/assets/js/c9ca25f4.639e47e3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2182],{8212:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ru/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ru/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ru/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"\u0424\u0435\u0440\u043c\u0435\u0440",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2182],{8212:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/ru/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/ru/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/ru/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"\u0424\u0435\u0440\u043c\u0435\u0440",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/runtime~main.f9b075de.js b/ru/assets/js/runtime~main.13f93c76.js similarity index 96% rename from ru/assets/js/runtime~main.f9b075de.js rename to ru/assets/js/runtime~main.13f93c76.js index ac0134e7114..bbc92b8c456 100644 --- a/ru/assets/js/runtime~main.f9b075de.js +++ b/ru/assets/js/runtime~main.13f93c76.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,c={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,t,r)=>{if(!f){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,f({}),f([]),f(f)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({424:"61b72a4f",851:"4458a2cc",1198:"61081e08",1235:"a7456010",1553:"05f1f583",1691:"33c34aef",1859:"512d1af8",1943:"5e15f349",2026:"f556c2f6",2140:"8cd477c7",2182:"c9ca25f4",2200:"c7600f05",2293:"bf9b84be",2777:"eaff6b9c",3152:"433a472a",3202:"0d3247af",3666:"cc45e43d",3801:"1e2dadf3",3823:"02d29b2c",3981:"4f82117e",4134:"393be207",4583:"1df93b7f",4597:"a71f73c8",5201:"b97121f8",5411:"72f7af25",5595:"05b207c3",5708:"2473ba88",5742:"aba21aa0",5754:"0251ce05",5785:"732050b7",5846:"8a1afe01",5877:"d3fdf294",5970:"3fa1e241",6044:"57277292",6061:"1f391b9e",6136:"2042b144",6362:"c70bea9c",6489:"ff0f93f2",6572:"b017f7b6",6778:"26f2c332",6969:"14eb3368",7098:"a7bd4aaa",7209:"51c87769",7551:"7d41149d",7572:"445a0557",7800:"850b921f",7908:"e2a7c902",8131:"9bd3b2e9",8192:"a137a47a",8401:"17896441",8580:"2d3f6a1f",8782:"54d19b4f",8795:"282263a0",9048:"a94703ab",9428:"130d6463",9546:"75fddfde",9555:"91e90fdf",9647:"5e95c892",9865:"3b0f362f",9870:"a1b3d0db"}[e]||e)+"."+{424:"824590af",851:"3a4f2e46",1198:"cf2300c0",1235:"deb810c9",1553:"8e5bbdae",1688:"433c2b5b",1691:"01bf855e",1859:"59256591",1943:"4f32095f",2026:"6a3b78c7",2140:"cf9536f7",2182:"a8782b94",2200:"af66f0a2",2237:"c851d8b1",2293:"1abf2001",2440:"ecd0621f",2777:"dd21b80c",3152:"4afa086f",3202:"ae504610",3666:"a63c1ed7",3801:"f9b59ce5",3823:"4c5db1be",3981:"5576c998",4134:"1210bb98",4324:"b14b8aad",4583:"c0d080f8",4597:"b59afc38",5049:"7f13b97c",5201:"0aa544ec",5394:"83d77ce3",5411:"516efe01",5595:"77da8a67",5708:"055eebb7",5742:"08d6695f",5754:"79b9d1ac",5785:"493c290a",5846:"18c901ad",5877:"d8ccb16d",5970:"5d3a521b",6044:"70c4d4f8",6061:"fc18f174",6136:"0f5ed589",6362:"5bc04d8c",6489:"1e152763",6572:"7e501377",6688:"86f0bb7d",6778:"e6a1ad1a",6969:"fa836339",7098:"c4e87eeb",7209:"71dddd16",7551:"12ab02c1",7572:"c8d0221f",7800:"a22a5331",7908:"59930ec4",8131:"d5041d59",8192:"2fc3e7ab",8401:"d04d0920",8580:"e8e9a264",8782:"a9ac1557",8795:"cad5bc14",8913:"0680f2c1",9048:"5d6981a0",9428:"d35db6dd",9462:"be2eb63e",9546:"5977e74e",9555:"5e136092",9647:"e4c313e0",9865:"6b37859f",9870:"bee3abdd"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,c)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ru/",b.gca=function(e){return e={17896441:"8401",57277292:"6044","61b72a4f":"424","4458a2cc":"851","61081e08":"1198",a7456010:"1235","05f1f583":"1553","33c34aef":"1691","512d1af8":"1859","5e15f349":"1943",f556c2f6:"2026","8cd477c7":"2140",c9ca25f4:"2182",c7600f05:"2200",bf9b84be:"2293",eaff6b9c:"2777","433a472a":"3152","0d3247af":"3202",cc45e43d:"3666","1e2dadf3":"3801","02d29b2c":"3823","4f82117e":"3981","393be207":"4134","1df93b7f":"4583",a71f73c8:"4597",b97121f8:"5201","72f7af25":"5411","05b207c3":"5595","2473ba88":"5708",aba21aa0:"5742","0251ce05":"5754","732050b7":"5785","8a1afe01":"5846",d3fdf294:"5877","3fa1e241":"5970","1f391b9e":"6061","2042b144":"6136",c70bea9c:"6362",ff0f93f2:"6489",b017f7b6:"6572","26f2c332":"6778","14eb3368":"6969",a7bd4aaa:"7098","51c87769":"7209","7d41149d":"7551","445a0557":"7572","850b921f":"7800",e2a7c902:"7908","9bd3b2e9":"8131",a137a47a:"8192","2d3f6a1f":"8580","54d19b4f":"8782","282263a0":"8795",a94703ab:"9048","130d6463":"9428","75fddfde":"9546","91e90fdf":"9555","5e95c892":"9647","3b0f362f":"9865",a1b3d0db:"9870"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var c=b.p+b.u(a),d=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",d.name="ChunkLoadError",d.type=r,d.request=c,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,c=f[0],d=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,t,r,c={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,t,r)=>{if(!f){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,f({}),f([]),f(f)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({424:"61b72a4f",851:"4458a2cc",1198:"61081e08",1235:"a7456010",1553:"05f1f583",1691:"33c34aef",1859:"512d1af8",1943:"5e15f349",2026:"f556c2f6",2140:"8cd477c7",2182:"c9ca25f4",2200:"c7600f05",2293:"bf9b84be",2777:"eaff6b9c",3152:"433a472a",3202:"0d3247af",3666:"cc45e43d",3801:"1e2dadf3",3823:"02d29b2c",3981:"4f82117e",4134:"393be207",4583:"1df93b7f",4597:"a71f73c8",5201:"b97121f8",5411:"72f7af25",5595:"05b207c3",5708:"2473ba88",5742:"aba21aa0",5754:"0251ce05",5785:"732050b7",5846:"8a1afe01",5877:"d3fdf294",5970:"3fa1e241",6044:"57277292",6061:"1f391b9e",6136:"2042b144",6362:"c70bea9c",6489:"ff0f93f2",6572:"b017f7b6",6778:"26f2c332",6969:"14eb3368",7098:"a7bd4aaa",7209:"51c87769",7551:"7d41149d",7572:"445a0557",7800:"850b921f",7908:"e2a7c902",8131:"9bd3b2e9",8192:"a137a47a",8401:"17896441",8580:"2d3f6a1f",8782:"54d19b4f",8795:"282263a0",9048:"a94703ab",9428:"130d6463",9546:"75fddfde",9555:"91e90fdf",9647:"5e95c892",9865:"3b0f362f",9870:"a1b3d0db"}[e]||e)+"."+{424:"824590af",851:"3a4f2e46",1198:"cf2300c0",1235:"deb810c9",1553:"8e5bbdae",1688:"433c2b5b",1691:"01bf855e",1859:"59256591",1943:"0fe2fab4",2026:"6a3b78c7",2140:"cf9536f7",2182:"639e47e3",2200:"af66f0a2",2237:"c851d8b1",2293:"1abf2001",2440:"ecd0621f",2777:"dd21b80c",3152:"4afa086f",3202:"ae504610",3666:"a63c1ed7",3801:"f9b59ce5",3823:"4c5db1be",3981:"5576c998",4134:"1210bb98",4324:"b14b8aad",4583:"c0d080f8",4597:"b59afc38",5049:"7f13b97c",5201:"0aa544ec",5394:"83d77ce3",5411:"516efe01",5595:"77da8a67",5708:"055eebb7",5742:"08d6695f",5754:"79b9d1ac",5785:"493c290a",5846:"18c901ad",5877:"d8ccb16d",5970:"5d3a521b",6044:"70c4d4f8",6061:"fc18f174",6136:"0f5ed589",6362:"5bc04d8c",6489:"1e152763",6572:"7e501377",6688:"86f0bb7d",6778:"e6a1ad1a",6969:"fa836339",7098:"c4e87eeb",7209:"71dddd16",7551:"12ab02c1",7572:"c8d0221f",7800:"a22a5331",7908:"59930ec4",8131:"3cea3d09",8192:"2fc3e7ab",8401:"d04d0920",8580:"e8e9a264",8782:"a9ac1557",8795:"cad5bc14",8913:"0680f2c1",9048:"5d6981a0",9428:"d35db6dd",9462:"be2eb63e",9546:"5977e74e",9555:"5e136092",9647:"e4c313e0",9865:"6b37859f",9870:"bee3abdd"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,c)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ru/",b.gca=function(e){return e={17896441:"8401",57277292:"6044","61b72a4f":"424","4458a2cc":"851","61081e08":"1198",a7456010:"1235","05f1f583":"1553","33c34aef":"1691","512d1af8":"1859","5e15f349":"1943",f556c2f6:"2026","8cd477c7":"2140",c9ca25f4:"2182",c7600f05:"2200",bf9b84be:"2293",eaff6b9c:"2777","433a472a":"3152","0d3247af":"3202",cc45e43d:"3666","1e2dadf3":"3801","02d29b2c":"3823","4f82117e":"3981","393be207":"4134","1df93b7f":"4583",a71f73c8:"4597",b97121f8:"5201","72f7af25":"5411","05b207c3":"5595","2473ba88":"5708",aba21aa0:"5742","0251ce05":"5754","732050b7":"5785","8a1afe01":"5846",d3fdf294:"5877","3fa1e241":"5970","1f391b9e":"6061","2042b144":"6136",c70bea9c:"6362",ff0f93f2:"6489",b017f7b6:"6572","26f2c332":"6778","14eb3368":"6969",a7bd4aaa:"7098","51c87769":"7209","7d41149d":"7551","445a0557":"7572","850b921f":"7800",e2a7c902:"7908","9bd3b2e9":"8131",a137a47a:"8192","2d3f6a1f":"8580","54d19b4f":"8782","282263a0":"8795",a94703ab:"9048","130d6463":"9428","75fddfde":"9546","91e90fdf":"9555","5e95c892":"9647","3b0f362f":"9865",a1b3d0db:"9870"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var c=b.p+b.u(a),d=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",d.name="ChunkLoadError",d.type=r,d.request=c,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,c=f[0],d=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/ru/develop/auto-sdk/auto-id/index.html b/ru/develop/auto-sdk/auto-id/index.html index 7703b144405..b274f3b3a0f 100644 --- a/ru/develop/auto-sdk/auto-id/index.html +++ b/ru/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/consensus/index.html b/ru/develop/auto-sdk/consensus/index.html index 7673e9e6006..0b44e6ec633 100644 --- a/ru/develop/auto-sdk/consensus/index.html +++ b/ru/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/drive/index.html b/ru/develop/auto-sdk/drive/index.html index 09953a77ca5..36c7a252842 100644 --- a/ru/develop/auto-sdk/drive/index.html +++ b/ru/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/index.html b/ru/develop/auto-sdk/index.html index 128a1f7a5f7..1f00711a144 100644 --- a/ru/develop/auto-sdk/index.html +++ b/ru/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/intro/index.html b/ru/develop/auto-sdk/intro/index.html index 0e3a7920b3a..41011683605 100644 --- a/ru/develop/auto-sdk/intro/index.html +++ b/ru/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/utils/index.html b/ru/develop/auto-sdk/utils/index.html index 2c32f73fbb5..0e47f36fc65 100644 --- a/ru/develop/auto-sdk/utils/index.html +++ b/ru/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/xdm/index.html b/ru/develop/auto-sdk/xdm/index.html index b9b7c83263f..43add2c24ca 100644 --- a/ru/develop/auto-sdk/xdm/index.html +++ b/ru/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/intro/index.html b/ru/develop/intro/index.html index 776a0e2025c..29d2b9900c8 100644 --- a/ru/develop/intro/index.html +++ b/ru/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/block-explorer/index.html b/ru/develop/nova/block-explorer/index.html index 6484b44e072..27ce31c1a66 100644 --- a/ru/develop/nova/block-explorer/index.html +++ b/ru/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/faucet/index.html b/ru/develop/nova/faucet/index.html index e52dfaecbad..fbb0e7ba938 100644 --- a/ru/develop/nova/faucet/index.html +++ b/ru/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/general/index.html b/ru/develop/nova/general/index.html index d3a7aa2e80e..47ec49acc98 100644 --- a/ru/develop/nova/general/index.html +++ b/ru/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/foundry/index.html b/ru/develop/nova/guides/foundry/index.html index 3d1bbe98e2a..77ad69f60fc 100644 --- a/ru/develop/nova/guides/foundry/index.html +++ b/ru/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/hardhat/index.html b/ru/develop/nova/guides/hardhat/index.html index 88d7d96deba..3da0b590c3b 100644 --- a/ru/develop/nova/guides/hardhat/index.html +++ b/ru/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/local-development/index.html b/ru/develop/nova/guides/local-development/index.html index 68f2d118371..e2aa5f0e7f5 100644 --- a/ru/develop/nova/guides/local-development/index.html +++ b/ru/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/remix/index.html b/ru/develop/nova/guides/remix/index.html index 14b85664eb4..147bb4ca16a 100644 --- a/ru/develop/nova/guides/remix/index.html +++ b/ru/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/index.html b/ru/develop/nova/index.html index 3f04b4cd0e1..972b2aa0db5 100644 --- a/ru/develop/nova/index.html +++ b/ru/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/introduction/index.html b/ru/develop/nova/introduction/index.html index 76041ce93eb..44806356d70 100644 --- a/ru/develop/nova/introduction/index.html +++ b/ru/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/metamask/index.html b/ru/develop/nova/metamask/index.html index 85ce6027535..b6f9c76af7a 100644 --- a/ru/develop/nova/metamask/index.html +++ b/ru/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/cluster/index.html b/ru/farming/advanced-cli/cluster/index.html index 7e41d37dba1..104b1e83b4e 100644 --- a/ru/farming/advanced-cli/cluster/index.html +++ b/ru/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/install/index.html b/ru/farming/advanced-cli/install/index.html index 0e60d3f5834..e037cbe3235 100644 --- a/ru/farming/advanced-cli/install/index.html +++ b/ru/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    Шаг 1: Загрузка исполняемых файлов Advanced CLI


    - - - + + +

    Шаг 2: Запуск ноды Advanced CLI


      @@ -42,11 +42,11 @@

      chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
      chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Запустите узел с помощью команды ниже. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Убедитесь, что скопировали всю команду:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    Вы должны видеть вывод похожий на это в Вашем терминале:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Шаг 1: Загрузка исполняемых файлов Advanced CLI


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/ru/farming/advanced-cli/taurus/index.html b/ru/farming/advanced-cli/taurus/index.html index a8ed8787b21..4fb1d03f127 100644 --- a/ru/farming/advanced-cli/taurus/index.html +++ b/ru/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/tips/index.html b/ru/farming/advanced-cli/tips/index.html index 0aa90987bcd..acd87e683de 100644 --- a/ru/farming/advanced-cli/tips/index.html +++ b/ru/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/common-problems/index.html b/ru/farming/common-problems/index.html index 73bc515829d..fc7c033a9c9 100644 --- a/ru/farming/common-problems/index.html +++ b/ru/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/ru/farming/guides/gpu-plotter/index.html b/ru/farming/guides/gpu-plotter/index.html index 06384bf4262..93a754a3200 100644 --- a/ru/farming/guides/gpu-plotter/index.html +++ b/ru/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/grafana-dashboard/index.html b/ru/farming/guides/grafana-dashboard/index.html index 328dc21f1f6..19899ac3352 100644 --- a/ru/farming/guides/grafana-dashboard/index.html +++ b/ru/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/index.html b/ru/farming/guides/index.html index 4c24961ec50..5f86f88ec4e 100644 --- a/ru/farming/guides/index.html +++ b/ru/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/port-config/index.html b/ru/farming/guides/port-config/index.html index 5d2bf933ecc..f904bdc1c67 100644 --- a/ru/farming/guides/port-config/index.html +++ b/ru/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/verified-farmer/index.html b/ru/farming/guides/verified-farmer/index.html index f5b3b9c3062..ed0b6f5f6fb 100644 --- a/ru/farming/guides/verified-farmer/index.html +++ b/ru/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/intro/index.html b/ru/farming/intro/index.html index a00e367a34e..73fd5d5af8d 100644 --- a/ru/farming/intro/index.html +++ b/ru/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/space-acres/install/index.html b/ru/farming/space-acres/install/index.html index 633495f97ff..464da5bcde8 100644 --- a/ru/farming/space-acres/install/index.html +++ b/ru/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/space-acres/translate/index.html b/ru/farming/space-acres/translate/index.html index 7d398f6be75..307ba779060 100644 --- a/ru/farming/space-acres/translate/index.html +++ b/ru/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/timekeeper/index.html b/ru/farming/timekeeper/index.html index 84008466886..df6d2ccf681 100644 --- a/ru/farming/timekeeper/index.html +++ b/ru/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/index.html b/ru/index.html index f6cb34bf0d0..b07b82b0ced 100644 --- a/ru/index.html +++ b/ru/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/academy/index.html b/ru/learn/academy/index.html index bf9659a426e..3e5dbf6e192 100644 --- a/ru/learn/academy/index.html +++ b/ru/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/intro/index.html b/ru/learn/intro/index.html index 19ce5e46895..7dbabcf4419 100644 --- a/ru/learn/intro/index.html +++ b/ru/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/security/index.html b/ru/learn/security/index.html index 6bc40aa76a0..7ec79d7aa1a 100644 --- a/ru/learn/security/index.html +++ b/ru/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/markdown-page/index.html b/ru/markdown-page/index.html index 86c4cccc35a..78f5b24356f 100644 --- a/ru/markdown-page/index.html +++ b/ru/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/community/resources/index.html b/ru/participate/community/resources/index.html index 41bfa181736..557eb521e85 100644 --- a/ru/participate/community/resources/index.html +++ b/ru/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/community/tools/index.html b/ru/participate/community/tools/index.html index ac8b5145b8a..237aa6ab080 100644 --- a/ru/participate/community/tools/index.html +++ b/ru/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/code-of-conduct/index.html b/ru/participate/contribute/code-of-conduct/index.html index 5b7042efc51..12cea0cc627 100644 --- a/ru/participate/contribute/code-of-conduct/index.html +++ b/ru/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/intro/index.html b/ru/participate/contribute/intro/index.html index 90e71e7d9b6..331e852d827 100644 --- a/ru/participate/contribute/intro/index.html +++ b/ru/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/translate/index.html b/ru/participate/contribute/translate/index.html index 139ee4ca29b..e133a7077d4 100644 --- a/ru/participate/contribute/translate/index.html +++ b/ru/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/intro/index.html b/ru/staking/intro/index.html index e6657264ae4..b72e9f0b663 100644 --- a/ru/staking/intro/index.html +++ b/ru/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/operator/deregister/index.html b/ru/staking/operator/deregister/index.html index b63a5e95a6d..8bd15a03180 100644 --- a/ru/staking/operator/deregister/index.html +++ b/ru/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/operator/register/index.html b/ru/staking/operator/register/index.html index e4ff2c8ab26..00e9f80a3ae 100644 --- a/ru/staking/operator/register/index.html +++ b/ru/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Выбор правильного домена

    Оператору необходимо зарегистрироваться на конкретном домене и создать пару ключей для участия в производстве комплекта. Stake Wars использует домены с идентификаторами 0 (Нова) и 1 (АвтоID). Можно зарегистрировать оператора для каждого домена, но каждый оператор потребует запуска узла.

    diff --git a/ru/staking/operator/tips/index.html b/ru/staking/operator/tips/index.html index 3fba2cf3191..c169e8eee6d 100644 --- a/ru/staking/operator/tips/index.html +++ b/ru/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/stake/index.html b/ru/staking/stake/index.html index c240b51e744..654a3f79ad3 100644 --- a/ru/staking/stake/index.html +++ b/ru/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/wallets/index.html b/ru/wallets/index.html index 81b6a92ad63..092355027e8 100644 --- a/ru/wallets/index.html +++ b/ru/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/wallets/polkadot/index.html b/ru/wallets/polkadot/index.html index 5067dc2f29e..9feefe579f5 100644 --- a/ru/wallets/polkadot/index.html +++ b/ru/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/wallets/subwallet/index.html b/ru/wallets/subwallet/index.html index 3e68f285518..0bca084d578 100644 --- a/ru/wallets/subwallet/index.html +++ b/ru/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/intro/index.html b/staking/intro/index.html index 2fdb88fc7bf..100a572f58a 100644 --- a/staking/intro/index.html +++ b/staking/intro/index.html @@ -12,8 +12,8 @@ - - + +

    Getting Started

    note

    This guide is focused on how to setup an operator, if you would like to learn more about the function of operators read the Autonomys Academy to get a better understanding.

    diff --git a/staking/operator/deregister/index.html b/staking/operator/deregister/index.html index 5aa88a8a212..2d49366d02d 100644 --- a/staking/operator/deregister/index.html +++ b/staking/operator/deregister/index.html @@ -12,8 +12,8 @@ - - + +

    Deregister an Operator

    Embedded Docs

    diff --git a/staking/operator/register/index.html b/staking/operator/register/index.html index eedba7ff22e..13c44dd09f3 100644 --- a/staking/operator/register/index.html +++ b/staking/operator/register/index.html @@ -12,8 +12,8 @@ - - + +

    Register an Operator

    Download Subspace Node

    @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/staking/operator/tips/index.html b/staking/operator/tips/index.html index b0ad8bb9dc5..9e9a5e8d398 100644 --- a/staking/operator/tips/index.html +++ b/staking/operator/tips/index.html @@ -12,8 +12,8 @@ - - + +

    Operator Tips & Tricks

    Claiming tSSC

    diff --git a/staking/stake/index.html b/staking/stake/index.html index 9f94d2c2a27..3a01b2142c8 100644 --- a/staking/stake/index.html +++ b/staking/stake/index.html @@ -12,8 +12,8 @@ - - + +

    Staking guide

    Select an operator to nominate using Autonomys Staking interface

    diff --git a/tr/404.html b/tr/404.html index 1724db9d8d1..5336a3b42ea 100644 --- a/tr/404.html +++ b/tr/404.html @@ -12,7 +12,7 @@ - + diff --git a/tr/assets/js/77aec7ce.53dba7bb.js b/tr/assets/js/77aec7ce.2270a3c6.js similarity index 98% rename from tr/assets/js/77aec7ce.53dba7bb.js rename to tr/assets/js/77aec7ce.2270a3c6.js index eb495db0bf6..634ad7d9bd9 100644 --- a/tr/assets/js/77aec7ce.53dba7bb.js +++ b/tr/assets/js/77aec7ce.2270a3c6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6373],{290:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/tr/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/tr/staking/intro"},next:{title:"Deregister an Operator",permalink:"/tr/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6373],{290:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/tr/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/tr/staking/intro"},next:{title:"Deregister an Operator",permalink:"/tr/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/tr/assets/js/cea7c09f.9f322f20.js b/tr/assets/js/cea7c09f.ee108b7d.js similarity index 96% rename from tr/assets/js/cea7c09f.9f322f20.js rename to tr/assets/js/cea7c09f.ee108b7d.js index db29bd4ac4f..88d7afff016 100644 --- a/tr/assets/js/cea7c09f.9f322f20.js +++ b/tr/assets/js/cea7c09f.ee108b7d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6223],{2276:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Kurulum",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Kurulum",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/tr/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Kurulum",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/tr/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/tr/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6223],{2276:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Kurulum",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Kurulum",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/tr/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Kurulum",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/tr/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/tr/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/tr/assets/js/e0fa42ef.d5dfdc48.js b/tr/assets/js/e0fa42ef.66cadb40.js similarity index 97% rename from tr/assets/js/e0fa42ef.d5dfdc48.js rename to tr/assets/js/e0fa42ef.66cadb40.js index 03de6311596..bd471043b69 100644 --- a/tr/assets/js/e0fa42ef.d5dfdc48.js +++ b/tr/assets/js/e0fa42ef.66cadb40.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5128],{8987:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/tr/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/tr/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/tr/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5128],{8987:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(4848),n=t(8453),o=t(1470),a=t(9365);t(8774),t(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/tr/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/tr/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/tr/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:t}=r;return t||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,s.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,s.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,s.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,s.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,s.jsxs)(o.A,{queryString:"component",children:[(0,s.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,s.jsx)(r.p,{children:"This should resolve on its own."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,s.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,s.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,s.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,s.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,s.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,s.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,s.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,s.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,s.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,s.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,s.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,s.jsxs)(t,{children:[(0,s.jsx)("summary",{children:(0,s.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,s.jsxs)(r.ul,{children:["\n",(0,s.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,s.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,s.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,s.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,s.jsxs)(r.li,{children:["Check your balance using ",(0,s.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,s.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9365:(e,r,t)=>{t.d(r,{A:()=>a});t(6540);var s=t(8215);const n={tabItem:"tabItem_Ymn6"};var o=t(4848);function a(e){let{children:r,hidden:t,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,s.A)(n.tabItem,a),hidden:t,children:r})}},1470:(e,r,t)=>{t.d(r,{A:()=>w});var s=t(6540),n=t(8215),o=t(3104),a=t(6347),i=t(205),l=t(7485),c=t(1682),u=t(679);function d(e){return s.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:t}=e;return(0,s.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:t,attributes:s,default:n}}=e;return{value:r,label:t,attributes:s,default:n}}))}(t);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,t])}function m(e){let{value:r,tabValues:t}=e;return t.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:t}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:t}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:r,groupId:t});return[(0,l.aZ)(o),(0,s.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:t=!1,groupId:n}=e,o=h(e),[a,l]=(0,s.useState)((()=>function(e){let{defaultValue:r,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const s=t.find((e=>e.default))??t[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:t,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(t);return[n,(0,s.useCallback)((e=>{t&&o.set(e)}),[t,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,s.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=t(4848);function v(e){let{className:r,block:t,selectedValue:s,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,t=l.indexOf(r),n=i[t].value;n!==s&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;r=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;r=l[t]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":t},r),children:i.map((e=>{let{value:r,label:t,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:s===r?0:-1,"aria-selected":s===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":s===r}),children:t??r},r)}))})}function x(e){let{lazy:r,children:t,selectedValue:o}=e;const a=(Array.isArray(t)?t:[t]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,s.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,s.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,t)=>{t.d(r,{A:()=>s});const s={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>i});var s=t(6540);const n={},o=s.createContext(n);function a(e){const r=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/tr/assets/js/runtime~main.34826a99.js b/tr/assets/js/runtime~main.153dc1f7.js similarity index 71% rename from tr/assets/js/runtime~main.34826a99.js rename to tr/assets/js/runtime~main.153dc1f7.js index 422281fb8d6..51f1d29891f 100644 --- a/tr/assets/js/runtime~main.34826a99.js +++ b/tr/assets/js/runtime~main.153dc1f7.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,b,c,t={},r={};function f(e){var a=r[e];if(void 0!==a)return a.exports;var d=r[e]={exports:{}};return t[e].call(d.exports,d,d.exports,f),d.exports}f.m=t,e=[],f.O=(a,d,b,c)=>{if(!d){var t=1/0;for(i=0;i=c)&&Object.keys(f.O).every((e=>f.O[e](d[o])))?d.splice(o--,1):(r=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,b,c]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var c=Object.create(null);f.r(c);var t={};a=a||[null,d({}),d([]),d(d)];for(var r=2&b&&e;"object"==typeof r&&!~a.indexOf(r);r=d(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,f.d(c,t),c},f.d=(e,a)=>{for(var d in a)f.o(a,d)&&!f.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,d)=>(f.f[d](e,a),a)),[])),f.u=e=>"assets/js/"+({12:"a5e127bd",324:"444dc468",332:"b50c87ca",345:"9023f226",370:"69a72439",409:"a3155b63",816:"02bba059",1149:"49b42b0a",1235:"a7456010",1286:"f87a3994",1418:"3a335aa6",1793:"bba291c8",1848:"c5b905bc",2185:"a8f1e931",2192:"c4039060",2203:"04efe389",2292:"d04d88f1",2358:"d7d47906",2414:"5756093d",2504:"09a97d9f",2663:"6382dfab",2807:"635927bd",2825:"5afabbf9",3367:"1a3c65c2",3459:"5be21e1a",3858:"4d3cd331",3901:"246091ec",3950:"832964be",4134:"393be207",4370:"a89db542",4583:"1df93b7f",4803:"24d220e5",4867:"e32b50cf",4941:"160a9306",5128:"e0fa42ef",5742:"aba21aa0",6061:"1f391b9e",6223:"cea7c09f",6373:"77aec7ce",6528:"ec89d9cb",6641:"1391411b",6681:"8588055a",6969:"14eb3368",7098:"a7bd4aaa",7150:"5ae429dc",7770:"050ac6c3",7874:"b73a2dd2",8237:"77a9a1dd",8327:"e0e7ce18",8401:"17896441",8551:"a0ac26cb",8691:"697287e4",8697:"24097f46",8700:"d4b03563",8705:"f46623eb",8952:"883d1c2d",9048:"a94703ab",9647:"5e95c892",9699:"6b90254d",9915:"8feb2d16"}[e]||e)+"."+{12:"d3d4a672",324:"69d27e73",332:"8bec31ba",345:"bab7475c",370:"39541d2c",409:"65806211",816:"3d9ee89b",1149:"f2efb5e4",1235:"deb810c9",1286:"fe1e964b",1418:"d7deb572",1688:"433c2b5b",1793:"fff0f099",1848:"17bf1ff9",2185:"54801296",2192:"3bd83140",2203:"b562a71b",2237:"c851d8b1",2292:"09cd3a63",2358:"65006e1a",2414:"88e7155b",2440:"ecd0621f",2504:"a3d22937",2663:"e7eb4842",2807:"51e7df9a",2825:"04ba048e",3367:"3effb74d",3459:"f5d201b7",3858:"cafed268",3901:"1ca9878a",3950:"58b9ecf3",4134:"aae4d436",4324:"b14b8aad",4370:"ea68d38b",4583:"c0d080f8",4803:"61599117",4867:"b6ad4420",4941:"ada8d4db",5049:"7f13b97c",5128:"d5dfdc48",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6223:"9f322f20",6373:"53dba7bb",6528:"dfac7ef6",6641:"73799eb5",6681:"a1ce8b8e",6688:"86f0bb7d",6969:"4f11b87f",7098:"c4e87eeb",7150:"f6c26f5b",7770:"8f2fd0a8",7874:"1e464fcb",8237:"60e262ed",8327:"9d2a0498",8401:"3769c7ca",8551:"4bac690c",8691:"c97cef5e",8697:"b8e753d5",8700:"c80f34fc",8705:"b8643b6e",8913:"0680f2c1",8952:"0230818c",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9699:"b2419598",9915:"0f8f1a36"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},c="portal:",f.l=(e,a,d,t)=>{if(b[e])b[e].push(a);else{var r,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var c=b[e];if(delete b[e],r.parentNode&&r.parentNode.removeChild(r),c&&c.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/tr/",f.gca=function(e){return e={17896441:"8401",a5e127bd:"12","444dc468":"324",b50c87ca:"332","9023f226":"345","69a72439":"370",a3155b63:"409","02bba059":"816","49b42b0a":"1149",a7456010:"1235",f87a3994:"1286","3a335aa6":"1418",bba291c8:"1793",c5b905bc:"1848",a8f1e931:"2185",c4039060:"2192","04efe389":"2203",d04d88f1:"2292",d7d47906:"2358","5756093d":"2414","09a97d9f":"2504","6382dfab":"2663","635927bd":"2807","5afabbf9":"2825","1a3c65c2":"3367","5be21e1a":"3459","4d3cd331":"3858","246091ec":"3901","832964be":"3950","393be207":"4134",a89db542:"4370","1df93b7f":"4583","24d220e5":"4803",e32b50cf:"4867","160a9306":"4941",e0fa42ef:"5128",aba21aa0:"5742","1f391b9e":"6061",cea7c09f:"6223","77aec7ce":"6373",ec89d9cb:"6528","1391411b":"6641","8588055a":"6681","14eb3368":"6969",a7bd4aaa:"7098","5ae429dc":"7150","050ac6c3":"7770",b73a2dd2:"7874","77a9a1dd":"8237",e0e7ce18:"8327",a0ac26cb:"8551","697287e4":"8691","24097f46":"8697",d4b03563:"8700",f46623eb:"8705","883d1c2d":"8952",a94703ab:"9048","5e95c892":"9647","6b90254d":"9699","8feb2d16":"9915"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,d)=>{var b=f.o(e,a)?e[a]:void 0;if(0!==b)if(b)d.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise(((d,c)=>b=e[a]=[d,c]));d.push(b[2]=c);var t=f.p+f.u(a),r=new Error;f.l(t,(d=>{if(f.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var c=d&&("load"===d.type?"missing":d.type),t=d&&d.target&&d.target.src;r.message="Loading chunk "+a+" failed.\n("+c+": "+t+")",r.name="ChunkLoadError",r.type=c,r.request=t,b[1](r)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,d)=>{var b,c,t=d[0],r=d[1],o=d[2],n=0;if(t.some((a=>0!==e[a]))){for(b in r)f.o(r,b)&&(f.m[b]=r[b]);if(o)var i=o(f)}for(a&&a(d);n{"use strict";var e,a,d,b,t,c={},r={};function f(e){var a=r[e];if(void 0!==a)return a.exports;var d=r[e]={exports:{}};return c[e].call(d.exports,d,d.exports,f),d.exports}f.m=c,e=[],f.O=(a,d,b,t)=>{if(!d){var c=1/0;for(i=0;i=t)&&Object.keys(f.O).every((e=>f.O[e](d[o])))?d.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,b,t]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var t=Object.create(null);f.r(t);var c={};a=a||[null,d({}),d([]),d(d)];for(var r=2&b&&e;"object"==typeof r&&!~a.indexOf(r);r=d(r))Object.getOwnPropertyNames(r).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,f.d(t,c),t},f.d=(e,a)=>{for(var d in a)f.o(a,d)&&!f.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,d)=>(f.f[d](e,a),a)),[])),f.u=e=>"assets/js/"+({12:"a5e127bd",324:"444dc468",332:"b50c87ca",345:"9023f226",370:"69a72439",409:"a3155b63",816:"02bba059",1149:"49b42b0a",1235:"a7456010",1286:"f87a3994",1418:"3a335aa6",1793:"bba291c8",1848:"c5b905bc",2185:"a8f1e931",2192:"c4039060",2203:"04efe389",2292:"d04d88f1",2358:"d7d47906",2414:"5756093d",2504:"09a97d9f",2663:"6382dfab",2807:"635927bd",2825:"5afabbf9",3367:"1a3c65c2",3459:"5be21e1a",3858:"4d3cd331",3901:"246091ec",3950:"832964be",4134:"393be207",4370:"a89db542",4583:"1df93b7f",4803:"24d220e5",4867:"e32b50cf",4941:"160a9306",5128:"e0fa42ef",5742:"aba21aa0",6061:"1f391b9e",6223:"cea7c09f",6373:"77aec7ce",6528:"ec89d9cb",6641:"1391411b",6681:"8588055a",6969:"14eb3368",7098:"a7bd4aaa",7150:"5ae429dc",7770:"050ac6c3",7874:"b73a2dd2",8237:"77a9a1dd",8327:"e0e7ce18",8401:"17896441",8551:"a0ac26cb",8691:"697287e4",8697:"24097f46",8700:"d4b03563",8705:"f46623eb",8952:"883d1c2d",9048:"a94703ab",9647:"5e95c892",9699:"6b90254d",9915:"8feb2d16"}[e]||e)+"."+{12:"d3d4a672",324:"69d27e73",332:"8bec31ba",345:"bab7475c",370:"39541d2c",409:"65806211",816:"3d9ee89b",1149:"f2efb5e4",1235:"deb810c9",1286:"fe1e964b",1418:"d7deb572",1688:"433c2b5b",1793:"fff0f099",1848:"17bf1ff9",2185:"54801296",2192:"3bd83140",2203:"b562a71b",2237:"c851d8b1",2292:"09cd3a63",2358:"65006e1a",2414:"88e7155b",2440:"ecd0621f",2504:"a3d22937",2663:"e7eb4842",2807:"51e7df9a",2825:"04ba048e",3367:"3effb74d",3459:"f5d201b7",3858:"cafed268",3901:"1ca9878a",3950:"58b9ecf3",4134:"aae4d436",4324:"b14b8aad",4370:"ea68d38b",4583:"c0d080f8",4803:"61599117",4867:"b6ad4420",4941:"ada8d4db",5049:"7f13b97c",5128:"66cadb40",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6223:"ee108b7d",6373:"2270a3c6",6528:"dfac7ef6",6641:"73799eb5",6681:"a1ce8b8e",6688:"86f0bb7d",6969:"4f11b87f",7098:"c4e87eeb",7150:"f6c26f5b",7770:"8f2fd0a8",7874:"1e464fcb",8237:"60e262ed",8327:"9d2a0498",8401:"3769c7ca",8551:"4bac690c",8691:"c97cef5e",8697:"b8e753d5",8700:"c80f34fc",8705:"b8643b6e",8913:"0680f2c1",8952:"0230818c",9048:"5d6981a0",9462:"be2eb63e",9647:"e4c313e0",9699:"b2419598",9915:"0f8f1a36"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},t="portal:",f.l=(e,a,d,c)=>{if(b[e])b[e].push(a);else{var r,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=b[e];if(delete b[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/tr/",f.gca=function(e){return e={17896441:"8401",a5e127bd:"12","444dc468":"324",b50c87ca:"332","9023f226":"345","69a72439":"370",a3155b63:"409","02bba059":"816","49b42b0a":"1149",a7456010:"1235",f87a3994:"1286","3a335aa6":"1418",bba291c8:"1793",c5b905bc:"1848",a8f1e931:"2185",c4039060:"2192","04efe389":"2203",d04d88f1:"2292",d7d47906:"2358","5756093d":"2414","09a97d9f":"2504","6382dfab":"2663","635927bd":"2807","5afabbf9":"2825","1a3c65c2":"3367","5be21e1a":"3459","4d3cd331":"3858","246091ec":"3901","832964be":"3950","393be207":"4134",a89db542:"4370","1df93b7f":"4583","24d220e5":"4803",e32b50cf:"4867","160a9306":"4941",e0fa42ef:"5128",aba21aa0:"5742","1f391b9e":"6061",cea7c09f:"6223","77aec7ce":"6373",ec89d9cb:"6528","1391411b":"6641","8588055a":"6681","14eb3368":"6969",a7bd4aaa:"7098","5ae429dc":"7150","050ac6c3":"7770",b73a2dd2:"7874","77a9a1dd":"8237",e0e7ce18:"8327",a0ac26cb:"8551","697287e4":"8691","24097f46":"8697",d4b03563:"8700",f46623eb:"8705","883d1c2d":"8952",a94703ab:"9048","5e95c892":"9647","6b90254d":"9699","8feb2d16":"9915"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,d)=>{var b=f.o(e,a)?e[a]:void 0;if(0!==b)if(b)d.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>b=e[a]=[d,t]));d.push(b[2]=t);var c=f.p+f.u(a),r=new Error;f.l(c,(d=>{if(f.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var t=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+c+")",r.name="ChunkLoadError",r.type=t,r.request=c,b[1](r)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,d)=>{var b,t,c=d[0],r=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(b in r)f.o(r,b)&&(f.m[b]=r[b]);if(o)var i=o(f)}for(a&&a(d);n - + diff --git a/tr/develop/auto-sdk/auto-id/index.html b/tr/develop/auto-sdk/auto-id/index.html index e4c92f8bbbd..fc8eab009ab 100644 --- a/tr/develop/auto-sdk/auto-id/index.html +++ b/tr/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/consensus/index.html b/tr/develop/auto-sdk/consensus/index.html index 82d03cbfb34..8d1d2069665 100644 --- a/tr/develop/auto-sdk/consensus/index.html +++ b/tr/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/drive/index.html b/tr/develop/auto-sdk/drive/index.html index 4a950e8cba0..5f632d436ee 100644 --- a/tr/develop/auto-sdk/drive/index.html +++ b/tr/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/index.html b/tr/develop/auto-sdk/index.html index c7d082f5d9d..43b169bab2d 100644 --- a/tr/develop/auto-sdk/index.html +++ b/tr/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/intro/index.html b/tr/develop/auto-sdk/intro/index.html index 1423b65e390..e18bde78fa4 100644 --- a/tr/develop/auto-sdk/intro/index.html +++ b/tr/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/utils/index.html b/tr/develop/auto-sdk/utils/index.html index b22d1899adb..32659f6cc31 100644 --- a/tr/develop/auto-sdk/utils/index.html +++ b/tr/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/xdm/index.html b/tr/develop/auto-sdk/xdm/index.html index ab0fbee688a..bdca8f26e4b 100644 --- a/tr/develop/auto-sdk/xdm/index.html +++ b/tr/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/intro/index.html b/tr/develop/intro/index.html index c6a5fec2527..bb79c547b12 100644 --- a/tr/develop/intro/index.html +++ b/tr/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/block-explorer/index.html b/tr/develop/nova/block-explorer/index.html index b5e2c1d681b..4c8f8acb076 100644 --- a/tr/develop/nova/block-explorer/index.html +++ b/tr/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/faucet/index.html b/tr/develop/nova/faucet/index.html index b323e4bb65d..1434d68b65c 100644 --- a/tr/develop/nova/faucet/index.html +++ b/tr/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/general/index.html b/tr/develop/nova/general/index.html index dd915512256..d8f952d7017 100644 --- a/tr/develop/nova/general/index.html +++ b/tr/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/foundry/index.html b/tr/develop/nova/guides/foundry/index.html index 9abc612b81a..035daafe2ff 100644 --- a/tr/develop/nova/guides/foundry/index.html +++ b/tr/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/hardhat/index.html b/tr/develop/nova/guides/hardhat/index.html index 198cfa2a12f..79a1c1ffd37 100644 --- a/tr/develop/nova/guides/hardhat/index.html +++ b/tr/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/local-development/index.html b/tr/develop/nova/guides/local-development/index.html index e33f2a5294b..ce11cd82a72 100644 --- a/tr/develop/nova/guides/local-development/index.html +++ b/tr/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/remix/index.html b/tr/develop/nova/guides/remix/index.html index 30a9e30407d..d7217e15519 100644 --- a/tr/develop/nova/guides/remix/index.html +++ b/tr/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/index.html b/tr/develop/nova/index.html index 8dc1fd9ed8d..cbfe0c1a80a 100644 --- a/tr/develop/nova/index.html +++ b/tr/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/introduction/index.html b/tr/develop/nova/introduction/index.html index fc40d5feb9e..99975c2f06a 100644 --- a/tr/develop/nova/introduction/index.html +++ b/tr/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/metamask/index.html b/tr/develop/nova/metamask/index.html index f2a7aab6653..f5f403edc19 100644 --- a/tr/develop/nova/metamask/index.html +++ b/tr/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/cluster/index.html b/tr/farming/advanced-cli/cluster/index.html index d531e3460ae..8cd16b86ae6 100644 --- a/tr/farming/advanced-cli/cluster/index.html +++ b/tr/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/install/index.html b/tr/farming/advanced-cli/install/index.html index 6cb1ff34529..b8d105012b3 100644 --- a/tr/farming/advanced-cli/install/index.html +++ b/tr/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/tr/farming/advanced-cli/taurus/index.html b/tr/farming/advanced-cli/taurus/index.html index 4e3c673d7f7..9e65720ce93 100644 --- a/tr/farming/advanced-cli/taurus/index.html +++ b/tr/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/tips/index.html b/tr/farming/advanced-cli/tips/index.html index d4b3c9d3b42..7d8f415a57b 100644 --- a/tr/farming/advanced-cli/tips/index.html +++ b/tr/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/common-problems/index.html b/tr/farming/common-problems/index.html index 88b17272bf8..320679642d9 100644 --- a/tr/farming/common-problems/index.html +++ b/tr/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/tr/farming/guides/gpu-plotter/index.html b/tr/farming/guides/gpu-plotter/index.html index f162ec72442..bb107208b12 100644 --- a/tr/farming/guides/gpu-plotter/index.html +++ b/tr/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/grafana-dashboard/index.html b/tr/farming/guides/grafana-dashboard/index.html index e1d452b317f..9cb03fef9aa 100644 --- a/tr/farming/guides/grafana-dashboard/index.html +++ b/tr/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/index.html b/tr/farming/guides/index.html index acd8c8c5e80..4d58c334f11 100644 --- a/tr/farming/guides/index.html +++ b/tr/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/port-config/index.html b/tr/farming/guides/port-config/index.html index 5f4a39dce0a..bbd145bebfb 100644 --- a/tr/farming/guides/port-config/index.html +++ b/tr/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/verified-farmer/index.html b/tr/farming/guides/verified-farmer/index.html index e2d19d7fe98..37f7000cba7 100644 --- a/tr/farming/guides/verified-farmer/index.html +++ b/tr/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/intro/index.html b/tr/farming/intro/index.html index 9fb87f4c070..0718808000c 100644 --- a/tr/farming/intro/index.html +++ b/tr/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/space-acres/install/index.html b/tr/farming/space-acres/install/index.html index 03da2ae0714..ab464f6b17c 100644 --- a/tr/farming/space-acres/install/index.html +++ b/tr/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/space-acres/translate/index.html b/tr/farming/space-acres/translate/index.html index fee1ba27039..af5c69ab281 100644 --- a/tr/farming/space-acres/translate/index.html +++ b/tr/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/timekeeper/index.html b/tr/farming/timekeeper/index.html index 702aae906b0..d3f31cc1a52 100644 --- a/tr/farming/timekeeper/index.html +++ b/tr/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/index.html b/tr/index.html index 477e1aa5840..a20750fe6e8 100644 --- a/tr/index.html +++ b/tr/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/academy/index.html b/tr/learn/academy/index.html index a627202374f..b2c23f9f981 100644 --- a/tr/learn/academy/index.html +++ b/tr/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/intro/index.html b/tr/learn/intro/index.html index 6408bf1beb6..6e330d4b326 100644 --- a/tr/learn/intro/index.html +++ b/tr/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/security/index.html b/tr/learn/security/index.html index 2597d314e62..1717fc45a57 100644 --- a/tr/learn/security/index.html +++ b/tr/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/markdown-page/index.html b/tr/markdown-page/index.html index bb371cf08f2..1c5043254e2 100644 --- a/tr/markdown-page/index.html +++ b/tr/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/community/resources/index.html b/tr/participate/community/resources/index.html index 820d3545844..60184e111ee 100644 --- a/tr/participate/community/resources/index.html +++ b/tr/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/community/tools/index.html b/tr/participate/community/tools/index.html index cf135e5463d..66925eecf91 100644 --- a/tr/participate/community/tools/index.html +++ b/tr/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/code-of-conduct/index.html b/tr/participate/contribute/code-of-conduct/index.html index ffe11013557..9c21540d761 100644 --- a/tr/participate/contribute/code-of-conduct/index.html +++ b/tr/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/intro/index.html b/tr/participate/contribute/intro/index.html index 99523872934..567a17d8d19 100644 --- a/tr/participate/contribute/intro/index.html +++ b/tr/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/translate/index.html b/tr/participate/contribute/translate/index.html index fe3d890f578..c3fb4050e7f 100644 --- a/tr/participate/contribute/translate/index.html +++ b/tr/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/intro/index.html b/tr/staking/intro/index.html index 07d11853277..2f43a20807c 100644 --- a/tr/staking/intro/index.html +++ b/tr/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/operator/deregister/index.html b/tr/staking/operator/deregister/index.html index 0b75bd426b0..5be9b0eaf10 100644 --- a/tr/staking/operator/deregister/index.html +++ b/tr/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/operator/register/index.html b/tr/staking/operator/register/index.html index 10e1f495c5e..6815f810d85 100644 --- a/tr/staking/operator/register/index.html +++ b/tr/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/tr/staking/operator/tips/index.html b/tr/staking/operator/tips/index.html index cd1726506b7..cab0bdbbc5a 100644 --- a/tr/staking/operator/tips/index.html +++ b/tr/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/stake/index.html b/tr/staking/stake/index.html index 83aa908cd1b..828fee99c62 100644 --- a/tr/staking/stake/index.html +++ b/tr/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/wallets/index.html b/tr/wallets/index.html index c374c0a361d..9f49ce5b0aa 100644 --- a/tr/wallets/index.html +++ b/tr/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/wallets/polkadot/index.html b/tr/wallets/polkadot/index.html index ccf131a6d83..c0363f226dc 100644 --- a/tr/wallets/polkadot/index.html +++ b/tr/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/wallets/subwallet/index.html b/tr/wallets/subwallet/index.html index 5c90d374635..59e672e879b 100644 --- a/tr/wallets/subwallet/index.html +++ b/tr/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/404.html b/uk/404.html index 142e5a585ee..bf1f354aa27 100644 --- a/uk/404.html +++ b/uk/404.html @@ -12,7 +12,7 @@ - + diff --git a/uk/assets/js/2ea3291d.c2c56246.js b/uk/assets/js/2ea3291d.bdfd0b64.js similarity index 96% rename from uk/assets/js/2ea3291d.c2c56246.js rename to uk/assets/js/2ea3291d.bdfd0b64.js index 71aa427d55f..f886f090caf 100644 --- a/uk/assets/js/2ea3291d.c2c56246.js +++ b/uk/assets/js/2ea3291d.bdfd0b64.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9360],{6770:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/uk/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/uk/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/uk/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9360],{6770:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/uk/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/uk/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/uk/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/uk/assets/js/33ff2cd2.09f46330.js b/uk/assets/js/33ff2cd2.79a22dbc.js similarity index 98% rename from uk/assets/js/33ff2cd2.09f46330.js rename to uk/assets/js/33ff2cd2.79a22dbc.js index 29db5209c52..849fa7116b4 100644 --- a/uk/assets/js/33ff2cd2.09f46330.js +++ b/uk/assets/js/33ff2cd2.79a22dbc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3430],{3566:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0406\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/uk/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0406\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/uk/staking/intro"},next:{title:"Deregister an Operator",permalink:"/uk/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,d.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=c??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3430],{3566:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0406\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/uk/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440","\u0406\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0456\u044f"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/uk/staking/intro"},next:{title:"Deregister an Operator",permalink:"/uk/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,d.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=c??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/uk/assets/js/8bd68588.6ba86b6b.js b/uk/assets/js/8bd68588.a2ea6823.js similarity index 97% rename from uk/assets/js/8bd68588.6ba86b6b.js rename to uk/assets/js/8bd68588.a2ea6823.js index 58e009b9e8a..e30921146e4 100644 --- a/uk/assets/js/8bd68588.6ba86b6b.js +++ b/uk/assets/js/8bd68588.a2ea6823.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1906],{2101:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/uk/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/uk/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/uk/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1906],{2101:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/uk/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/uk/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/uk/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var y=s(4848);function v(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,y.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,y.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,y.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,y.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,y.jsx)(v,{...r,...e}),(0,y.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,y.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/uk/assets/js/runtime~main.4c68d672.js b/uk/assets/js/runtime~main.77cf9775.js similarity index 95% rename from uk/assets/js/runtime~main.4c68d672.js rename to uk/assets/js/runtime~main.77cf9775.js index 2ad38faa7db..8fc855904a7 100644 --- a/uk/assets/js/runtime~main.4c68d672.js +++ b/uk/assets/js/runtime~main.77cf9775.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({542:"5f67d1d4",548:"596bdb87",555:"ab6648ab",1235:"a7456010",1289:"8e2e6ed7",1444:"0461b9b5",1648:"239df4f1",1780:"eded667b",1906:"8bd68588",2063:"ef69ed49",2172:"a678f7a1",2276:"13414fc5",2401:"e9810845",2985:"2db1a985",2995:"384408e2",3043:"e918e14c",3190:"026a745f",3430:"33ff2cd2",3431:"d68a8c22",3462:"afa793d4",3618:"7aa0d96e",3762:"6c390286",4122:"9c3ff3d3",4134:"393be207",4583:"1df93b7f",5207:"fe75fb83",5596:"363b8bde",5703:"ce144e60",5742:"aba21aa0",5810:"d553a649",5829:"212e3915",6061:"1f391b9e",6082:"dda451ca",6243:"d2e39746",6293:"c6aee7c6",6615:"1801efba",6701:"4ba4090f",6726:"8f1fe180",6769:"6ced23bc",6969:"14eb3368",7098:"a7bd4aaa",7426:"6eae28d2",7689:"87ed99ec",7728:"958fbda6",7746:"42ad9ff7",7823:"d2ea7a0d",8229:"04431b2b",8348:"31acefd2",8401:"17896441",8586:"6534b575",8604:"39ffcf7a",8716:"d43aee6c",8810:"25e8c0bf",9048:"a94703ab",9325:"8a686245",9360:"2ea3291d",9481:"f5f94a50",9647:"5e95c892",9860:"2e5a6466",9942:"bc11d41e"}[e]||e)+"."+{542:"e2737964",548:"5699c548",555:"994e6c62",1235:"deb810c9",1289:"0decd0f2",1444:"3b27d13a",1648:"6097545e",1688:"433c2b5b",1780:"9999b7de",1906:"6ba86b6b",2063:"e6c67391",2172:"2b67b6f0",2237:"c851d8b1",2276:"93f7543b",2401:"5370c1c3",2440:"ecd0621f",2985:"e7f05e17",2995:"b7e9a00f",3043:"f2f3f51e",3190:"1dceaf94",3430:"09f46330",3431:"8d6e618b",3462:"ca1ab5fe",3618:"daf79735",3762:"6836da2a",4122:"a30511ed",4134:"dd66a24b",4324:"b14b8aad",4583:"c0d080f8",5049:"7f13b97c",5207:"6c1018e4",5394:"83d77ce3",5596:"a752df08",5703:"00b3e464",5742:"08d6695f",5810:"14fdbf19",5829:"4786b052",6061:"fc18f174",6082:"f6f16499",6243:"8fde2c24",6293:"540b3c36",6615:"99b80aa1",6688:"86f0bb7d",6701:"5680dc44",6726:"6818f9f4",6769:"e52cb915",6969:"4f11b87f",7098:"c4e87eeb",7426:"afafc4ba",7689:"7d43209d",7728:"a0fc2f4e",7746:"3a65dff6",7823:"3c83778e",8229:"908c22d2",8348:"76e5d4bd",8401:"3769c7ca",8586:"ad6c3643",8604:"81d7cb3a",8716:"dc2577a0",8810:"75aad279",8913:"0680f2c1",9048:"5d6981a0",9325:"ae57b2cd",9360:"c2c56246",9462:"be2eb63e",9481:"5d2df06a",9647:"e4c313e0",9860:"28a2467c",9942:"b564d01a"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/uk/",b.gca=function(e){return e={17896441:"8401","5f67d1d4":"542","596bdb87":"548",ab6648ab:"555",a7456010:"1235","8e2e6ed7":"1289","0461b9b5":"1444","239df4f1":"1648",eded667b:"1780","8bd68588":"1906",ef69ed49:"2063",a678f7a1:"2172","13414fc5":"2276",e9810845:"2401","2db1a985":"2985","384408e2":"2995",e918e14c:"3043","026a745f":"3190","33ff2cd2":"3430",d68a8c22:"3431",afa793d4:"3462","7aa0d96e":"3618","6c390286":"3762","9c3ff3d3":"4122","393be207":"4134","1df93b7f":"4583",fe75fb83:"5207","363b8bde":"5596",ce144e60:"5703",aba21aa0:"5742",d553a649:"5810","212e3915":"5829","1f391b9e":"6061",dda451ca:"6082",d2e39746:"6243",c6aee7c6:"6293","1801efba":"6615","4ba4090f":"6701","8f1fe180":"6726","6ced23bc":"6769","14eb3368":"6969",a7bd4aaa:"7098","6eae28d2":"7426","87ed99ec":"7689","958fbda6":"7728","42ad9ff7":"7746",d2ea7a0d:"7823","04431b2b":"8229","31acefd2":"8348","6534b575":"8586","39ffcf7a":"8604",d43aee6c:"8716","25e8c0bf":"8810",a94703ab:"9048","8a686245":"9325","2ea3291d":"9360",f5f94a50:"9481","5e95c892":"9647","2e5a6466":"9860",bc11d41e:"9942"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],c=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,f,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({542:"5f67d1d4",548:"596bdb87",555:"ab6648ab",1235:"a7456010",1289:"8e2e6ed7",1444:"0461b9b5",1648:"239df4f1",1780:"eded667b",1906:"8bd68588",2063:"ef69ed49",2172:"a678f7a1",2276:"13414fc5",2401:"e9810845",2985:"2db1a985",2995:"384408e2",3043:"e918e14c",3190:"026a745f",3430:"33ff2cd2",3431:"d68a8c22",3462:"afa793d4",3618:"7aa0d96e",3762:"6c390286",4122:"9c3ff3d3",4134:"393be207",4583:"1df93b7f",5207:"fe75fb83",5596:"363b8bde",5703:"ce144e60",5742:"aba21aa0",5810:"d553a649",5829:"212e3915",6061:"1f391b9e",6082:"dda451ca",6243:"d2e39746",6293:"c6aee7c6",6615:"1801efba",6701:"4ba4090f",6726:"8f1fe180",6769:"6ced23bc",6969:"14eb3368",7098:"a7bd4aaa",7426:"6eae28d2",7689:"87ed99ec",7728:"958fbda6",7746:"42ad9ff7",7823:"d2ea7a0d",8229:"04431b2b",8348:"31acefd2",8401:"17896441",8586:"6534b575",8604:"39ffcf7a",8716:"d43aee6c",8810:"25e8c0bf",9048:"a94703ab",9325:"8a686245",9360:"2ea3291d",9481:"f5f94a50",9647:"5e95c892",9860:"2e5a6466",9942:"bc11d41e"}[e]||e)+"."+{542:"e2737964",548:"5699c548",555:"994e6c62",1235:"deb810c9",1289:"0decd0f2",1444:"3b27d13a",1648:"6097545e",1688:"433c2b5b",1780:"9999b7de",1906:"a2ea6823",2063:"e6c67391",2172:"2b67b6f0",2237:"c851d8b1",2276:"93f7543b",2401:"5370c1c3",2440:"ecd0621f",2985:"e7f05e17",2995:"b7e9a00f",3043:"f2f3f51e",3190:"1dceaf94",3430:"79a22dbc",3431:"8d6e618b",3462:"ca1ab5fe",3618:"daf79735",3762:"6836da2a",4122:"a30511ed",4134:"dd66a24b",4324:"b14b8aad",4583:"c0d080f8",5049:"7f13b97c",5207:"6c1018e4",5394:"83d77ce3",5596:"a752df08",5703:"00b3e464",5742:"08d6695f",5810:"14fdbf19",5829:"4786b052",6061:"fc18f174",6082:"f6f16499",6243:"8fde2c24",6293:"540b3c36",6615:"99b80aa1",6688:"86f0bb7d",6701:"5680dc44",6726:"6818f9f4",6769:"e52cb915",6969:"4f11b87f",7098:"c4e87eeb",7426:"afafc4ba",7689:"7d43209d",7728:"a0fc2f4e",7746:"3a65dff6",7823:"3c83778e",8229:"908c22d2",8348:"76e5d4bd",8401:"3769c7ca",8586:"ad6c3643",8604:"81d7cb3a",8716:"dc2577a0",8810:"75aad279",8913:"0680f2c1",9048:"5d6981a0",9325:"ae57b2cd",9360:"bdfd0b64",9462:"be2eb63e",9481:"5d2df06a",9647:"e4c313e0",9860:"28a2467c",9942:"b564d01a"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/uk/",b.gca=function(e){return e={17896441:"8401","5f67d1d4":"542","596bdb87":"548",ab6648ab:"555",a7456010:"1235","8e2e6ed7":"1289","0461b9b5":"1444","239df4f1":"1648",eded667b:"1780","8bd68588":"1906",ef69ed49:"2063",a678f7a1:"2172","13414fc5":"2276",e9810845:"2401","2db1a985":"2985","384408e2":"2995",e918e14c:"3043","026a745f":"3190","33ff2cd2":"3430",d68a8c22:"3431",afa793d4:"3462","7aa0d96e":"3618","6c390286":"3762","9c3ff3d3":"4122","393be207":"4134","1df93b7f":"4583",fe75fb83:"5207","363b8bde":"5596",ce144e60:"5703",aba21aa0:"5742",d553a649:"5810","212e3915":"5829","1f391b9e":"6061",dda451ca:"6082",d2e39746:"6243",c6aee7c6:"6293","1801efba":"6615","4ba4090f":"6701","8f1fe180":"6726","6ced23bc":"6769","14eb3368":"6969",a7bd4aaa:"7098","6eae28d2":"7426","87ed99ec":"7689","958fbda6":"7728","42ad9ff7":"7746",d2ea7a0d:"7823","04431b2b":"8229","31acefd2":"8348","6534b575":"8586","39ffcf7a":"8604",d43aee6c:"8716","25e8c0bf":"8810",a94703ab:"9048","8a686245":"9325","2ea3291d":"9360",f5f94a50:"9481","5e95c892":"9647","2e5a6466":"9860",bc11d41e:"9942"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],c=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(d);n - + diff --git a/uk/develop/auto-sdk/auto-id/index.html b/uk/develop/auto-sdk/auto-id/index.html index 66c2374a58a..1b70b5c5f21 100644 --- a/uk/develop/auto-sdk/auto-id/index.html +++ b/uk/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/consensus/index.html b/uk/develop/auto-sdk/consensus/index.html index c66c3a3845b..34f0e476efc 100644 --- a/uk/develop/auto-sdk/consensus/index.html +++ b/uk/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/drive/index.html b/uk/develop/auto-sdk/drive/index.html index acfda58276a..0ef2dff76ee 100644 --- a/uk/develop/auto-sdk/drive/index.html +++ b/uk/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/index.html b/uk/develop/auto-sdk/index.html index dff003b05bf..ab25992e63c 100644 --- a/uk/develop/auto-sdk/index.html +++ b/uk/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/intro/index.html b/uk/develop/auto-sdk/intro/index.html index f50e6ee836c..e688648d973 100644 --- a/uk/develop/auto-sdk/intro/index.html +++ b/uk/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/utils/index.html b/uk/develop/auto-sdk/utils/index.html index b09b6af1d7e..7b5056145d2 100644 --- a/uk/develop/auto-sdk/utils/index.html +++ b/uk/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/xdm/index.html b/uk/develop/auto-sdk/xdm/index.html index 81a96b2a4f9..c6a5adcdbc8 100644 --- a/uk/develop/auto-sdk/xdm/index.html +++ b/uk/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/intro/index.html b/uk/develop/intro/index.html index 6dc1a289c22..7b1b5497442 100644 --- a/uk/develop/intro/index.html +++ b/uk/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/block-explorer/index.html b/uk/develop/nova/block-explorer/index.html index 55e7e147258..2916e23a82f 100644 --- a/uk/develop/nova/block-explorer/index.html +++ b/uk/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/faucet/index.html b/uk/develop/nova/faucet/index.html index 3f09f47c1d6..6f3a607c62a 100644 --- a/uk/develop/nova/faucet/index.html +++ b/uk/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/general/index.html b/uk/develop/nova/general/index.html index 1da1b5257c9..b253a020e8b 100644 --- a/uk/develop/nova/general/index.html +++ b/uk/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/foundry/index.html b/uk/develop/nova/guides/foundry/index.html index 9c59dad8ece..d26fa903e5f 100644 --- a/uk/develop/nova/guides/foundry/index.html +++ b/uk/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/hardhat/index.html b/uk/develop/nova/guides/hardhat/index.html index db051c032cc..ab977c02c08 100644 --- a/uk/develop/nova/guides/hardhat/index.html +++ b/uk/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/local-development/index.html b/uk/develop/nova/guides/local-development/index.html index 188e3885ee6..c95151edde0 100644 --- a/uk/develop/nova/guides/local-development/index.html +++ b/uk/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/remix/index.html b/uk/develop/nova/guides/remix/index.html index f576d4f6ddf..2498cc047d4 100644 --- a/uk/develop/nova/guides/remix/index.html +++ b/uk/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/index.html b/uk/develop/nova/index.html index f5a3164e707..b1235852dde 100644 --- a/uk/develop/nova/index.html +++ b/uk/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/introduction/index.html b/uk/develop/nova/introduction/index.html index 23ecd19519b..282f0b8bdc7 100644 --- a/uk/develop/nova/introduction/index.html +++ b/uk/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/metamask/index.html b/uk/develop/nova/metamask/index.html index de5750403d0..86a9c34ff04 100644 --- a/uk/develop/nova/metamask/index.html +++ b/uk/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/cluster/index.html b/uk/farming/advanced-cli/cluster/index.html index 5ca45d9c5ff..0900c0fdfaa 100644 --- a/uk/farming/advanced-cli/cluster/index.html +++ b/uk/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/install/index.html b/uk/farming/advanced-cli/install/index.html index f68c7ff6934..00f38338969 100644 --- a/uk/farming/advanced-cli/install/index.html +++ b/uk/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/uk/farming/advanced-cli/taurus/index.html b/uk/farming/advanced-cli/taurus/index.html index ed5e0897d8e..7bdad452f71 100644 --- a/uk/farming/advanced-cli/taurus/index.html +++ b/uk/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/tips/index.html b/uk/farming/advanced-cli/tips/index.html index d5d1f2445f9..9a27dff1642 100644 --- a/uk/farming/advanced-cli/tips/index.html +++ b/uk/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/common-problems/index.html b/uk/farming/common-problems/index.html index e023ba7954d..5a8910145aa 100644 --- a/uk/farming/common-problems/index.html +++ b/uk/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/uk/farming/guides/gpu-plotter/index.html b/uk/farming/guides/gpu-plotter/index.html index 387233c24d3..e0d728f28c7 100644 --- a/uk/farming/guides/gpu-plotter/index.html +++ b/uk/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/grafana-dashboard/index.html b/uk/farming/guides/grafana-dashboard/index.html index 1661bd64435..8001740e2a2 100644 --- a/uk/farming/guides/grafana-dashboard/index.html +++ b/uk/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/index.html b/uk/farming/guides/index.html index d4bbfd8680c..15a86e7a815 100644 --- a/uk/farming/guides/index.html +++ b/uk/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/port-config/index.html b/uk/farming/guides/port-config/index.html index cca543eb014..72d3cc05df8 100644 --- a/uk/farming/guides/port-config/index.html +++ b/uk/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/verified-farmer/index.html b/uk/farming/guides/verified-farmer/index.html index 37bf9168934..0637bb60110 100644 --- a/uk/farming/guides/verified-farmer/index.html +++ b/uk/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/intro/index.html b/uk/farming/intro/index.html index 838f7f5a496..a784a320246 100644 --- a/uk/farming/intro/index.html +++ b/uk/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/space-acres/install/index.html b/uk/farming/space-acres/install/index.html index 8c15e05ec87..a539ed9acca 100644 --- a/uk/farming/space-acres/install/index.html +++ b/uk/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/space-acres/translate/index.html b/uk/farming/space-acres/translate/index.html index 819a8abe31b..530ed7d1829 100644 --- a/uk/farming/space-acres/translate/index.html +++ b/uk/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/timekeeper/index.html b/uk/farming/timekeeper/index.html index 4e6efe1d288..289c79b2dac 100644 --- a/uk/farming/timekeeper/index.html +++ b/uk/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/index.html b/uk/index.html index e1b9bca72c7..31c27179351 100644 --- a/uk/index.html +++ b/uk/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/academy/index.html b/uk/learn/academy/index.html index 80d338dc62d..60b980fb2d8 100644 --- a/uk/learn/academy/index.html +++ b/uk/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/intro/index.html b/uk/learn/intro/index.html index 3481ad97889..452ecd3f8a7 100644 --- a/uk/learn/intro/index.html +++ b/uk/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/security/index.html b/uk/learn/security/index.html index 3000ccf882b..7bd175af82d 100644 --- a/uk/learn/security/index.html +++ b/uk/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/markdown-page/index.html b/uk/markdown-page/index.html index 0f757c6a44a..e1bc3918ccc 100644 --- a/uk/markdown-page/index.html +++ b/uk/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/community/resources/index.html b/uk/participate/community/resources/index.html index ca882af4886..2c6a88bb7a7 100644 --- a/uk/participate/community/resources/index.html +++ b/uk/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/community/tools/index.html b/uk/participate/community/tools/index.html index 59fff2c8b9b..b407b9e532a 100644 --- a/uk/participate/community/tools/index.html +++ b/uk/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/code-of-conduct/index.html b/uk/participate/contribute/code-of-conduct/index.html index 9bf95bca14e..83dd4e88f4a 100644 --- a/uk/participate/contribute/code-of-conduct/index.html +++ b/uk/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/intro/index.html b/uk/participate/contribute/intro/index.html index 3d8dae6cfdc..c49f907e15b 100644 --- a/uk/participate/contribute/intro/index.html +++ b/uk/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/translate/index.html b/uk/participate/contribute/translate/index.html index d3ca03a051c..e5d36f33de0 100644 --- a/uk/participate/contribute/translate/index.html +++ b/uk/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/intro/index.html b/uk/staking/intro/index.html index f8e6cd147c8..900a85061ae 100644 --- a/uk/staking/intro/index.html +++ b/uk/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/operator/deregister/index.html b/uk/staking/operator/deregister/index.html index 670fd8762b4..b561db83539 100644 --- a/uk/staking/operator/deregister/index.html +++ b/uk/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/operator/register/index.html b/uk/staking/operator/register/index.html index 6a4e2e857c7..00063c9d402 100644 --- a/uk/staking/operator/register/index.html +++ b/uk/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/uk/staking/operator/tips/index.html b/uk/staking/operator/tips/index.html index 00f4405746e..879fec2d86a 100644 --- a/uk/staking/operator/tips/index.html +++ b/uk/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/stake/index.html b/uk/staking/stake/index.html index f8230eecfdb..5faf2b3d6ab 100644 --- a/uk/staking/stake/index.html +++ b/uk/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/wallets/index.html b/uk/wallets/index.html index 122b26a7d40..0bf63f4fc54 100644 --- a/uk/wallets/index.html +++ b/uk/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/wallets/polkadot/index.html b/uk/wallets/polkadot/index.html index 3ffd00abbfa..f226608d760 100644 --- a/uk/wallets/polkadot/index.html +++ b/uk/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/wallets/subwallet/index.html b/uk/wallets/subwallet/index.html index be8a32d35c2..b39d5751347 100644 --- a/uk/wallets/subwallet/index.html +++ b/uk/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/404.html b/vi/404.html index 53cfab5742e..9baac31f0f8 100644 --- a/vi/404.html +++ b/vi/404.html @@ -12,7 +12,7 @@ - + diff --git a/vi/assets/js/0a1f242d.b16eefc3.js b/vi/assets/js/0a1f242d.dd847bbd.js similarity index 97% rename from vi/assets/js/0a1f242d.b16eefc3.js rename to vi/assets/js/0a1f242d.dd847bbd.js index d28f8b99e3a..498219dc7b7 100644 --- a/vi/assets/js/0a1f242d.b16eefc3.js +++ b/vi/assets/js/0a1f242d.dd847bbd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2799],{4084:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/vi/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/vi/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/vi/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=s(4848);function y(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,v.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...r,...e}),(0,v.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2799],{4084:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var t=s(4848),n=s(8453),o=s(1470),a=s(9365);s(8774),s(5648);const i={title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},l=void 0,c={id:"farming-&-staking/farming/common-problems",title:"Common Problems",description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/vi/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Common Problems",sidebar_position:4,description:"This page addresses common problems users may encounter while using Autonomys software. It provides details on specific errors, their severity levels, and suggested remediation steps, helping users troubleshoot effectively.",slug:"/farming/common-problems",keywords:["Error","Warn","Warning","Problem","Issues"]},sidebar:"tutorialSidebar",previous:{title:"Taurus Network",permalink:"/vi/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/vi/farming/guides"}},u={},d=[{value:"Program Issues",id:"program-issues",level:2},{value:"Unexpected Behavior",id:"unexpected-behavior",level:2}];function h(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components},{Details:s}=r;return s||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"forums"})," or visit our ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," server for assistance."]}),"\n",(0,t.jsx)(r.h2,{id:"program-issues",children:"Program Issues"}),"\n",(0,t.jsx)(r.p,{children:"These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(o.A,{queryString:"component",children:[(0,t.jsxs)(a.A,{value:"node",label:"Node",default:!0,children:[(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork."}),(0,t.jsx)(r.p,{children:"This should resolve on its own."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(a.A,{value:"farmer",label:"Farmer",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 This indicates that there is not enough space in the cache to store a new piece of data."}),(0,t.jsx)(r.p,{children:"The drive where you are storing your plot is out of space. Reduce the plot size and restart the farmer. Additionally, ensure that you are saving the plot to the correct drive and that it is properly mounted."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(a.A,{value:"farming-cluster",label:"Farming Cluster",children:(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 This is a known issue that is actively being investigated. To help mitigate these errors, run your NATS component on the same system as your Controller, Cache, and Plotter components."}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"unexpected-behavior",children:"Unexpected Behavior"}),"\n",(0,t.jsx)(r.p,{children:"These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them."}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"."]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Farmer is stuck on plotting and has not made any progress for several hours."})}),(0,t.jsx)(r.p,{children:"Try restarting your node or farmer. We've observed that when creating larger plots, the process may sometimes seem stalled, but it typically resumes automatically after a while."})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"Rewards have not been earned after several days of farming."})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["Ensure you are using the latest release of either ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})," or the ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Confirm that your farmer is active and on the highest block by checking our ",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," server."]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function m(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},9365:(e,r,s)=>{s.d(r,{A:()=>a});s(6540);var t=s(8215);const n={tabItem:"tabItem_Ymn6"};var o=s(4848);function a(e){let{children:r,hidden:s,className:a}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.A)(n.tabItem,a),hidden:s,children:r})}},1470:(e,r,s)=>{s.d(r,{A:()=>w});var t=s(6540),n=s(8215),o=s(3104),a=s(6347),i=s(205),l=s(7485),c=s(1682),u=s(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:r,children:s}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:s,attributes:t,default:n}}=e;return{value:r,label:s,attributes:t,default:n}}))}(s);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,s])}function m(e){let{value:r,tabValues:s}=e;return s.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:s}=e;const n=(0,a.W6)(),o=function(e){let{queryString:r=!1,groupId:s}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:r,groupId:s});return[(0,l.aZ)(o),(0,t.useCallback)((e=>{if(!o)return;const r=new URLSearchParams(n.location.search);r.set(o,e),n.replace({...n.location,search:r.toString()})}),[o,n])]}function f(e){const{defaultValue:r,queryString:s=!1,groupId:n}=e,o=h(e),[a,l]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!m({value:r,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=s.find((e=>e.default))??s[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:o}))),[c,d]=p({queryString:s,groupId:n}),[f,b]=function(e){let{groupId:r}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(r),[n,o]=(0,u.Dv)(s);return[n,(0,t.useCallback)((e=>{s&&o.set(e)}),[s,o])]}({groupId:n}),g=(()=>{const e=c??f;return m({value:e,tabValues:o})?e:null})();(0,i.A)((()=>{g&&l(g)}),[g]);return{selectedValue:a,selectValue:(0,t.useCallback)((e=>{if(!m({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=s(4848);function y(e){let{className:r,block:s,selectedValue:t,selectValue:a,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.a_)(),u=e=>{const r=e.currentTarget,s=l.indexOf(r),n=i[s].value;n!==t&&(c(r),a(n))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;r=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;r=l[s]??l[l.length-1];break}}r?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.A)("tabs",{"tabs--block":s},r),children:i.map((e=>{let{value:r,label:s,attributes:o}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,n.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":t===r}),children:s??r},r)}))})}function x(e){let{lazy:r,children:s,selectedValue:o}=e;const a=(Array.isArray(s)?s:[s]).filter(Boolean);if(r){const e=a.find((e=>e.props.value===o));return e?(0,t.cloneElement)(e,{className:(0,n.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:a.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==o})))})}function j(e){const r=f(e);return(0,v.jsxs)("div",{className:(0,n.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...r,...e}),(0,v.jsx)(x,{...r,...e})]})}function w(e){const r=(0,b.A)();return(0,v.jsx)(j,{...e,children:d(e.children)},String(r))}},5648:(e,r,s)=>{s.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,s)=>{s.d(r,{R:()=>a,x:()=>i});var t=s(6540);const n={},o=t.createContext(n);function a(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/vi/assets/js/4ef201d1.8b630f3a.js b/vi/assets/js/4ef201d1.827985cf.js similarity index 96% rename from vi/assets/js/4ef201d1.8b630f3a.js rename to vi/assets/js/4ef201d1.827985cf.js index 709c255dbb3..539f83f631c 100644 --- a/vi/assets/js/4ef201d1.8b630f3a.js +++ b/vi/assets/js/4ef201d1.827985cf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2618],{4279:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/vi/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/vi/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/vi/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[2618],{4279:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>L,contentTitle:()=>E,default:()=>B,frontMatter:()=>O,metadata:()=>R,toc:()=>Z});var a=s(4848),t=s(8453),r=s(1470),o=s(9365),i=s(1432),l=s(8774),c=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-the-advanced-cli-node",children:"Step 2: Start the Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Open your terminal and navigate to the directory where you downloaded the binaries. For example, if you downloaded them to ",(0,a.jsx)(n.code,{children:"~/Downloads"}),", use:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Make the ",(0,a.jsx)(n.code,{children:"farmer"})," and ",(0,a.jsx)(n.code,{children:"node"})," executable:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Start the node using the command below. Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. Ensure you copy the entire command:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-the-advanced-cli-farmer",children:"Step 3: Start the Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"Farm Location Guidance",type:"tip",children:(0,a.jsx)(n.p,{children:"If you choose to use the same drive for plots and the node database, make sure to leave at least 60 GiB of free space for node database growth. This helps ensure that you have enough space for both system operations and node functionality."})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"Open a new terminal and navigate to the directory where the Subspace farmer binary is located. Start the farmer with the following command:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"You should see output similar to this in your terminal:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"you-are-now-farming",children:"You Are Now Farming!"}),"\n",(0,a.jsx)(n.p,{children:"You're all set! After your node syncs, plotting will start, and each plotted sector will automatically begin farming and become eligible to earn rewards."})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Windows No Output Bug",type:"caution",children:(0,a.jsxs)(n.p,{children:["If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"})]})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-the-advanced-cli-executables",children:"Step 1: Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open ",(0,a.jsx)(n.code,{children:"Powershell"})," (we do not recommend using Command Prompt as its syntax is slightly different)"]}),"\n",(0,a.jsxs)(n.li,{children:["In the terminal we will change to the Downloads directory using this command ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function p(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-specific-warnings",children:"macOS Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"Minimum macOS Version",type:"caution",children:(0,a.jsx)(n.p,{children:"The minimum support macOS version is version 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"step-1-download-advanced-cli-executables",children:"Step 1: Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:[(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-start-advanced-cli-node",children:"Step 2: Start Advanced CLI Node"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["When attempting to start the node, you may be prompted: Click on ",(0,a.jsx)(n.code,{children:"cancel"})," instead of moving it to trash.\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\nAfter this, simply repeat the step you prompted for (step 4 or 6). This time, click the ",(0,a.jsx)(n.code,{children:"Open"})," button when prompted."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Open your favorite terminal, and change to the Downloads directory using ",(0,a.jsx)(n.code,{children:"cd Downloads"})]}),"\n",(0,a.jsx)(n.li,{children:"Make the farmer & node executable:"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"step-3-start-advanced-cli-farmer",children:"Step 3: Start Advanced CLI Farmer"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"You should see something similar in the terminal:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot."}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}var b=s(4626);function f(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,t.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(f,{...e})}):f(e)}var y=s(6540);const j="compose-generator-form__container_KQ66",v="compose-generator-form__card_CMxH",_="compose-generator-form__input_nR1w",w="compose-generator-form__label_cXGP",N="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",S="compose-generator-form__group_Jx8k",A="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const F=function(){const[e,n]=(0,y.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[t,r]=(0,y.useState)(""),[o,l]=(0,y.useState)([]),[c,d]=(0,y.useState)({}),[u,m]=(0,y.useState)([]),h=e=>{u.includes(e)||m([...u,e])},p=e=>{m(u.filter((n=>n!==e)))};(0,y.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),l(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const t=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(t).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;r(n),d({})}else d(t);else d({...t,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${j} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${v}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:t,name:r}=n;return(0,a.jsxs)("div",{className:S,children:[(0,a.jsxs)("label",{htmlFor:r,className:`text--bold ${w} ${u.includes(r)?A:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>p(r),children:[t,":"]}),(0,a.jsx)("input",{className:_,name:r,placeholder:t,onChange:f,value:e[r]}),c[r]&&(0,a.jsx)("p",{className:I,children:c[r]})]},r)})),(0,a.jsxs)("div",{className:S,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${w} ${u.includes("snapshot")?A:""}`,onMouseEnter:()=>h("snapshot"),onAnimationEnd:()=>p("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:_,name:"snapshot",value:e.snapshot,onChange:f,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${S} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${N}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:t})})]})};function T(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"step-1-prepare-values",children:"Step 1: Prepare Values"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Input your parameters in the provided form and click ",(0,a.jsx)(n.code,{children:"Generate"}),".\nDon't forget to specify your reward address instead of a default one!"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"step-2-fill-in-generator",children:"Step 2: Fill in Generator"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(F,{}),"\n",(0,a.jsx)(n.h2,{id:"step-3-execute-docker-compose",children:"Step 3: Execute Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Copy the generated ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Create the ",(0,a.jsx)(n.code,{children:"subspace"})," directory and the ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," file in it. Paste the output from the generator into the file."]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["Now go to directory with ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," and type ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," to start everything"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["You can read logs with ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"}),", for the rest read ",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker Compose CLI reference"}),"."]})]})}function P(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(T,{...e})}):T(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"If you're running unsupported Linux distribution or CPU architecture, you may try to build binaries yourself from source."}),"\n",(0,a.jsx)(n.p,{children:"NOTE: This is primarily targeted at tech-savvy users and not recommended unless you know what you're doing.\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. You can read more about this issue ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),". At this point, the solution is to use LLVM + Clang 15 and add the ",(0,a.jsx)(n.code,{children:"-Z build-std"})," flag to the ",(0,a.jsx)(n.code,{children:"cargo build"})," command."]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["You'll find two binaries under ",(0,a.jsx)(n.code,{children:"target/production"})," directory once it succeeds, after which refer to instructions above on how to use them."]})]})}function C(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},E=void 0,R={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"Install",description:"How to run an Autonomys Network Farmer with the Substrate CLI",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/vi/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Install",sidebar_position:1,description:"How to run an Autonomys Network Farmer with the Substrate CLI",slug:"/farming/advanced-cli/install",keywords:["Farmer","Farming","CLI","Binaries","Docker"]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/vi/farming/space-acres/translate"},next:{title:"Farming Cluster",permalink:"/vi/farming/advanced-cli/cluster"}},L={},Z=[{value:"Advanced CLI Installation Guide",id:"advanced-cli-installation-guide",level:2},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start the Advanced CLI Node",id:"step-2-start-the-advanced-cli-node",level:2},{value:"Step 3: Start the Advanced CLI Farmer",id:"step-3-start-the-advanced-cli-farmer",level:2},{value:"You Are Now Farming!",id:"you-are-now-farming",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"Step 1: Download the Advanced CLI Executables",id:"step-1-download-the-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"macOS Specific Warnings:",id:"macos-specific-warnings",level:3},{value:"Step 1: Download Advanced CLI Executables",id:"step-1-download-advanced-cli-executables",level:2},{value:"Step 2: Start Advanced CLI Node",id:"step-2-start-advanced-cli-node",level:2},{value:"Step 3: Start Advanced CLI Farmer",id:"step-3-start-advanced-cli-farmer",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"Step 1: Prepare Values",id:"step-1-prepare-values",level:2},{value:"Step 2: Fill in Generator",id:"step-2-fill-in-generator",level:2},{value:"Step 3: Execute Docker Compose",id:"step-3-execute-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"Multiple Versions Available",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," Optimized for Intel Skylake and newer CPUs, as well as AMD Ryzen processors. Ideal for PCs manufactured from 2015 onward."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," Designed for Intel Broadwell, Haswell, and older CPUs, along with their AMD counterparts. Suitable for systems built between 2009 and 2015 and for virtual environments that do not support Skylake instructions."]}),"\n"]}),(0,a.jsxs)(n.p,{children:["For the latest binaries and source code, please visit the ",(0,a.jsx)(n.strong,{children:"Releases"})," section on our ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"}),"."]})]}),"\n",(0,a.jsx)(n.admonition,{title:"Available Parameters",type:"tip",children:(0,a.jsxs)(n.p,{children:["A complete list of parameters and their functions can be obtained using the ",(0,a.jsx)(n.code,{children:"--help"})," option with both ",(0,a.jsx)(n.code,{children:"subspace-node"})," and ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"advanced-cli-installation-guide",children:"Advanced CLI Installation Guide"}),"\n",(0,a.jsxs)(n.admonition,{title:"Substrate Address Needed",type:"tip",children:[(0,a.jsxs)(n.p,{children:["To use this software, you need a Substrate wallet address. For assistance in creating a Substrate wallet, refer to our guides for \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," or ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"."]}),(0,a.jsxs)(n.p,{children:["If you have a previous wallet address that starts with ",(0,a.jsx)(n.code,{children:"st"}),", you can still use it, or you can transform it to the new ",(0,a.jsx)(n.code,{children:"su"})," prefix. You can convert your existing wallet address using the tool available at ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),". Previously, our testnets used the prefix ",(0,a.jsx)(n.code,{children:"2254"}),", while the Taurus testnet and Autonomys mainnet use the prefix ",(0,a.jsx)(n.code,{children:"6094"}),"."]})]}),"\n",(0,a.jsx)(n.p,{children:"We\u2019ll provide the files you need for your operating system:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),": The node implementation for the Subspace protocol."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),": Manages plotting, replotting, and farming rewards."]}),"\n"]}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(h,{})}),(0,a.jsx)(o.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(g,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(P,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsx)(n.admonition,{title:"Farming multiple plots",type:"tip",children:(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})})}),"\n",(0,a.jsx)(n.admonition,{title:"Learn More About Syncing, Plotting & Farming",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})}),"\n",(0,a.jsx)(n.admonition,{title:"Leave Feedback!",type:"info",children:(0,a.jsxs)(n.p,{children:["Help us improve by sharing your ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"feedback"})," on our releases. We\u2019re eager to hear from you and make things better!"]})})]})}function B(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const t={tabItem:"tabItem_Ymn6"};var r=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(t.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>_});var a=s(6540),t=s(8215),r=s(3104),o=s(6347),i=s(205),l=s(7485),c=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:t}}=e;return{value:n,label:s,attributes:a,default:t}}))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function h(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:s}=e;const t=(0,o.W6)(),r=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(t.location.search);n.set(r,e),t.replace({...t.location,search:n.toString()})}),[r,t])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:t}=e,r=m(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=p({queryString:s,groupId:t}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,r]=(0,d.Dv)(s);return[t,(0,a.useCallback)((e=>{s&&r.set(e)}),[s,r])]}({groupId:t}),f=(()=>{const e=c??x;return h({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{f&&l(f)}),[f]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!h({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),b(e)}),[u,b,r]),tabValues:r}}var b=s(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var g=s(4848);function y(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,s=l.indexOf(n),t=i[s].value;t!==a&&(c(n),o(t))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=l.indexOf(e.currentTarget)+1;n=l[s]??l[0];break}case"ArrowLeft":{const s=l.indexOf(e.currentTarget)-1;n=l[s]??l[l.length-1];break}}n?.focus()};return(0,g.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:r}=e;return(0,g.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,t.A)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function j(e){let{lazy:n,children:s,selectedValue:r}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,t.A)("margin-top--md",e.props.className)}):null}return(0,g.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,g.jsxs)("div",{className:(0,t.A)("tabs-container",f.tabList),children:[(0,g.jsx)(y,{...n,...e}),(0,g.jsx)(j,{...n,...e})]})}function _(e){const n=(0,b.A)();return(0,g.jsx)(v,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),t=s(1432);const r={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[l,c]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,h]=(0,a.useState)([]),p=e=>{m.includes(e)||h([...m,e])},x=e=>{h(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const t=f();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(t).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;c(s)})(),u({})):u(t):u({...t,rewardAddress:"Please enter your reward address"})},f=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},y=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${r["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${r["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:r["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":"]}),(0,o.jsx)("input",{className:r["systemd-service-generator-form__input"],name:t,placeholder:a,onChange:g,value:e[t]}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:t}=n;return(0,o.jsxs)("div",{className:r["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:t,className:`text--bold ${r["systemd-service-generator-form__label"]} ${m.includes(t)?r["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>x(t),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${r["systemd-service-generator-form__checkbox"]} ${r["systemd-service-generator-form__input"]}`,name:t,onChange:y,type:"checkbox",checked:"on"===e[t]?"checked":""}),d[t]&&(0,o.jsx)("p",{className:r["systemd-service-generator-form__text--error"],children:d[t]})]},t)}))]}),(0,o.jsx)("div",{className:`${r["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${r["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(t.A,{language:"ini",title:"subspace-farmer.service",children:l})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/vi/assets/js/51675b43.33aed895.js b/vi/assets/js/51675b43.44eb2abe.js similarity index 98% rename from vi/assets/js/51675b43.33aed895.js rename to vi/assets/js/51675b43.44eb2abe.js index 07ef445ea21..4f0669fc86e 100644 --- a/vi/assets/js/51675b43.33aed895.js +++ b/vi/assets/js/51675b43.44eb2abe.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[690],{2547:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>w,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/vi/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/vi/staking/intro"},next:{title:"Deregister an Operator",permalink:"/vi/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function v(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function w(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(v,{...e})}):v(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[690],{2547:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>w,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),d=t(5648);function c(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${d.A.buttons} ${d.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/vi/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/vi/staking/intro"},next:{title:"Deregister an Operator",permalink:"/vi/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function v(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function w(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(v,{...e})}):v(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),d=t(1682),c=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,d.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[d,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,c.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=d??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:d}=(0,r.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(d(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:c,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function v(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function w(e){const n=(0,m.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/vi/assets/js/runtime~main.f6678caa.js b/vi/assets/js/runtime~main.2b62a8dc.js similarity index 96% rename from vi/assets/js/runtime~main.f6678caa.js rename to vi/assets/js/runtime~main.2b62a8dc.js index 97fd1c41fa1..2f9b721fb09 100644 --- a/vi/assets/js/runtime~main.f6678caa.js +++ b/vi/assets/js/runtime~main.2b62a8dc.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,b,t,d={},r={};function c(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return d[e].call(f.exports,f,f.exports,c),f.exports}c.m=d,e=[],c.O=(a,f,b,t)=>{if(!f){var d=1/0;for(i=0;i=t)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,b,t]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var t=Object.create(null);c.r(t);var d={};a=a||[null,f({}),f([]),f(f)];for(var r=2&b&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,c.d(t,d),t},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({549:"db6cb46a",640:"4ec08e0f",690:"51675b43",894:"92dabff7",1098:"59a3d8e8",1235:"a7456010",1300:"e39a2c0d",1647:"1248474b",1658:"eb2fec3e",1759:"b66c3048",2092:"2efea74c",2098:"5132e0fe",2119:"c47f0b0d",2580:"690e91b5",2618:"4ef201d1",2799:"0a1f242d",3126:"f7aff5d6",3230:"ff8a604f",3365:"82c4bf5b",3947:"46915a86",4134:"393be207",4279:"1316e6dd",4326:"f46d6d6e",4400:"16dc43b4",4476:"1a090eb7",4540:"3b59c46e",4583:"1df93b7f",4778:"c9c621af",4788:"a5c9462e",4940:"17815207",5021:"04907f3c",5145:"6959c05e",5254:"417b5a27",5318:"882f11d3",5385:"d4d9970c",5514:"af06e319",5669:"bffb202b",5742:"aba21aa0",6061:"1f391b9e",6081:"9049f22f",6603:"76f82757",6946:"e6d6fd26",6969:"14eb3368",7098:"a7bd4aaa",7341:"58439319",7727:"c066e2bb",7814:"45b265d7",8307:"8dece91e",8397:"630e40a5",8401:"17896441",8444:"b112e7d1",8630:"731a9806",9048:"a94703ab",9351:"92217bde",9453:"9b4e40ea",9593:"cc449986",9647:"5e95c892",9681:"87696bf0",9774:"74bde01b",9991:"8b053c9b"}[e]||e)+"."+{549:"aac29d09",640:"e104af61",690:"33aed895",894:"0abbac59",1098:"d4f0f7b7",1235:"deb810c9",1300:"fde2f7cc",1647:"e5b987ad",1658:"17da5165",1688:"433c2b5b",1759:"594fd32b",2092:"78c23c64",2098:"5d1ba89c",2119:"04413cd8",2237:"c851d8b1",2440:"ecd0621f",2580:"b4e5a0a7",2618:"8b630f3a",2799:"b16eefc3",3126:"44b4ccf3",3230:"180f5010",3365:"26b5bdfa",3947:"13ced708",4134:"7d091a58",4279:"fe78260b",4324:"b14b8aad",4326:"f88ea7c9",4400:"fe430e50",4476:"3e20fbfa",4540:"e102d6e4",4583:"c0d080f8",4778:"dcc667d9",4788:"6b32fd1e",4940:"7a2eebbc",5021:"368275b1",5049:"7f13b97c",5145:"ad779366",5254:"fb3eee4f",5318:"586134ff",5385:"ea3229c2",5394:"83d77ce3",5514:"d02fc185",5669:"87ad1cfb",5742:"08d6695f",6061:"fc18f174",6081:"cb6d8d1c",6603:"df752af3",6688:"86f0bb7d",6946:"f6cfd4cd",6969:"4f11b87f",7098:"c4e87eeb",7341:"9e6cfa91",7727:"9fca6a8a",7814:"56d03be8",8307:"1e398f64",8397:"3c009dc8",8401:"3769c7ca",8444:"798bebda",8630:"6acb3d0f",8913:"0680f2c1",9048:"5d6981a0",9351:"6bb56455",9453:"608c8a8a",9462:"be2eb63e",9593:"6cad7e70",9647:"e4c313e0",9681:"de4e350c",9774:"0c1fefbd",9991:"f0ff27ba"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},t="portal:",c.l=(e,a,f,d)=>{if(b[e])b[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=b[e];if(delete b[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/vi/",c.gca=function(e){return e={17815207:"4940",17896441:"8401",58439319:"7341",db6cb46a:"549","4ec08e0f":"640","51675b43":"690","92dabff7":"894","59a3d8e8":"1098",a7456010:"1235",e39a2c0d:"1300","1248474b":"1647",eb2fec3e:"1658",b66c3048:"1759","2efea74c":"2092","5132e0fe":"2098",c47f0b0d:"2119","690e91b5":"2580","4ef201d1":"2618","0a1f242d":"2799",f7aff5d6:"3126",ff8a604f:"3230","82c4bf5b":"3365","46915a86":"3947","393be207":"4134","1316e6dd":"4279",f46d6d6e:"4326","16dc43b4":"4400","1a090eb7":"4476","3b59c46e":"4540","1df93b7f":"4583",c9c621af:"4778",a5c9462e:"4788","04907f3c":"5021","6959c05e":"5145","417b5a27":"5254","882f11d3":"5318",d4d9970c:"5385",af06e319:"5514",bffb202b:"5669",aba21aa0:"5742","1f391b9e":"6061","9049f22f":"6081","76f82757":"6603",e6d6fd26:"6946","14eb3368":"6969",a7bd4aaa:"7098",c066e2bb:"7727","45b265d7":"7814","8dece91e":"8307","630e40a5":"8397",b112e7d1:"8444","731a9806":"8630",a94703ab:"9048","92217bde":"9351","9b4e40ea":"9453",cc449986:"9593","5e95c892":"9647","87696bf0":"9681","74bde01b":"9774","8b053c9b":"9991"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,f)=>{var b=c.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>b=e[a]=[f,t]));f.push(b[2]=t);var d=c.p+c.u(a),r=new Error;c.l(d,(f=>{if(c.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var t=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+d+")",r.name="ChunkLoadError",r.type=t,r.request=d,b[1](r)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var b,t,d=f[0],r=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(b in r)c.o(r,b)&&(c.m[b]=r[b]);if(o)var i=o(c)}for(a&&a(f);n{"use strict";var e,a,f,b,t,d={},r={};function c(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return d[e].call(f.exports,f,f.exports,c),f.exports}c.m=d,e=[],c.O=(a,f,b,t)=>{if(!f){var d=1/0;for(i=0;i=t)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,b,t]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var t=Object.create(null);c.r(t);var d={};a=a||[null,f({}),f([]),f(f)];for(var r=2&b&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,c.d(t,d),t},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({549:"db6cb46a",640:"4ec08e0f",690:"51675b43",894:"92dabff7",1098:"59a3d8e8",1235:"a7456010",1300:"e39a2c0d",1647:"1248474b",1658:"eb2fec3e",1759:"b66c3048",2092:"2efea74c",2098:"5132e0fe",2119:"c47f0b0d",2580:"690e91b5",2618:"4ef201d1",2799:"0a1f242d",3126:"f7aff5d6",3230:"ff8a604f",3365:"82c4bf5b",3947:"46915a86",4134:"393be207",4279:"1316e6dd",4326:"f46d6d6e",4400:"16dc43b4",4476:"1a090eb7",4540:"3b59c46e",4583:"1df93b7f",4778:"c9c621af",4788:"a5c9462e",4940:"17815207",5021:"04907f3c",5145:"6959c05e",5254:"417b5a27",5318:"882f11d3",5385:"d4d9970c",5514:"af06e319",5669:"bffb202b",5742:"aba21aa0",6061:"1f391b9e",6081:"9049f22f",6603:"76f82757",6946:"e6d6fd26",6969:"14eb3368",7098:"a7bd4aaa",7341:"58439319",7727:"c066e2bb",7814:"45b265d7",8307:"8dece91e",8397:"630e40a5",8401:"17896441",8444:"b112e7d1",8630:"731a9806",9048:"a94703ab",9351:"92217bde",9453:"9b4e40ea",9593:"cc449986",9647:"5e95c892",9681:"87696bf0",9774:"74bde01b",9991:"8b053c9b"}[e]||e)+"."+{549:"aac29d09",640:"e104af61",690:"44eb2abe",894:"0abbac59",1098:"d4f0f7b7",1235:"deb810c9",1300:"fde2f7cc",1647:"e5b987ad",1658:"17da5165",1688:"433c2b5b",1759:"594fd32b",2092:"78c23c64",2098:"5d1ba89c",2119:"04413cd8",2237:"c851d8b1",2440:"ecd0621f",2580:"b4e5a0a7",2618:"827985cf",2799:"dd847bbd",3126:"44b4ccf3",3230:"180f5010",3365:"26b5bdfa",3947:"13ced708",4134:"7d091a58",4279:"fe78260b",4324:"b14b8aad",4326:"f88ea7c9",4400:"fe430e50",4476:"3e20fbfa",4540:"e102d6e4",4583:"c0d080f8",4778:"dcc667d9",4788:"6b32fd1e",4940:"7a2eebbc",5021:"368275b1",5049:"7f13b97c",5145:"ad779366",5254:"fb3eee4f",5318:"586134ff",5385:"ea3229c2",5394:"83d77ce3",5514:"d02fc185",5669:"87ad1cfb",5742:"08d6695f",6061:"fc18f174",6081:"cb6d8d1c",6603:"df752af3",6688:"86f0bb7d",6946:"f6cfd4cd",6969:"4f11b87f",7098:"c4e87eeb",7341:"9e6cfa91",7727:"9fca6a8a",7814:"56d03be8",8307:"1e398f64",8397:"3c009dc8",8401:"3769c7ca",8444:"798bebda",8630:"6acb3d0f",8913:"0680f2c1",9048:"5d6981a0",9351:"6bb56455",9453:"608c8a8a",9462:"be2eb63e",9593:"6cad7e70",9647:"e4c313e0",9681:"de4e350c",9774:"0c1fefbd",9991:"f0ff27ba"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},t="portal:",c.l=(e,a,f,d)=>{if(b[e])b[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=b[e];if(delete b[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/vi/",c.gca=function(e){return e={17815207:"4940",17896441:"8401",58439319:"7341",db6cb46a:"549","4ec08e0f":"640","51675b43":"690","92dabff7":"894","59a3d8e8":"1098",a7456010:"1235",e39a2c0d:"1300","1248474b":"1647",eb2fec3e:"1658",b66c3048:"1759","2efea74c":"2092","5132e0fe":"2098",c47f0b0d:"2119","690e91b5":"2580","4ef201d1":"2618","0a1f242d":"2799",f7aff5d6:"3126",ff8a604f:"3230","82c4bf5b":"3365","46915a86":"3947","393be207":"4134","1316e6dd":"4279",f46d6d6e:"4326","16dc43b4":"4400","1a090eb7":"4476","3b59c46e":"4540","1df93b7f":"4583",c9c621af:"4778",a5c9462e:"4788","04907f3c":"5021","6959c05e":"5145","417b5a27":"5254","882f11d3":"5318",d4d9970c:"5385",af06e319:"5514",bffb202b:"5669",aba21aa0:"5742","1f391b9e":"6061","9049f22f":"6081","76f82757":"6603",e6d6fd26:"6946","14eb3368":"6969",a7bd4aaa:"7098",c066e2bb:"7727","45b265d7":"7814","8dece91e":"8307","630e40a5":"8397",b112e7d1:"8444","731a9806":"8630",a94703ab:"9048","92217bde":"9351","9b4e40ea":"9453",cc449986:"9593","5e95c892":"9647","87696bf0":"9681","74bde01b":"9774","8b053c9b":"9991"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,f)=>{var b=c.o(e,a)?e[a]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>b=e[a]=[f,t]));f.push(b[2]=t);var d=c.p+c.u(a),r=new Error;c.l(d,(f=>{if(c.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var t=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+d+")",r.name="ChunkLoadError",r.type=t,r.request=d,b[1](r)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var b,t,d=f[0],r=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(b in r)c.o(r,b)&&(c.m[b]=r[b]);if(o)var i=o(c)}for(a&&a(f);n - + diff --git a/vi/develop/auto-sdk/auto-id/index.html b/vi/develop/auto-sdk/auto-id/index.html index 7941d4b8660..8fcf483d2ab 100644 --- a/vi/develop/auto-sdk/auto-id/index.html +++ b/vi/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/consensus/index.html b/vi/develop/auto-sdk/consensus/index.html index 4adbbb9c27f..015122a2537 100644 --- a/vi/develop/auto-sdk/consensus/index.html +++ b/vi/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/drive/index.html b/vi/develop/auto-sdk/drive/index.html index cc976a9f931..d992733e0c9 100644 --- a/vi/develop/auto-sdk/drive/index.html +++ b/vi/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/index.html b/vi/develop/auto-sdk/index.html index e2ea234031e..f6d2560dcee 100644 --- a/vi/develop/auto-sdk/index.html +++ b/vi/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/intro/index.html b/vi/develop/auto-sdk/intro/index.html index dba28543c3d..79d402cfc21 100644 --- a/vi/develop/auto-sdk/intro/index.html +++ b/vi/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/utils/index.html b/vi/develop/auto-sdk/utils/index.html index 87e17930fae..9b81c5fc5eb 100644 --- a/vi/develop/auto-sdk/utils/index.html +++ b/vi/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/xdm/index.html b/vi/develop/auto-sdk/xdm/index.html index bfd51ba7035..2e7d313fefe 100644 --- a/vi/develop/auto-sdk/xdm/index.html +++ b/vi/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/intro/index.html b/vi/develop/intro/index.html index 1281308590b..0d202b07fba 100644 --- a/vi/develop/intro/index.html +++ b/vi/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/block-explorer/index.html b/vi/develop/nova/block-explorer/index.html index 7e88747fcd8..cf996b8f73d 100644 --- a/vi/develop/nova/block-explorer/index.html +++ b/vi/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/faucet/index.html b/vi/develop/nova/faucet/index.html index 72c79ce829f..8aa3b404948 100644 --- a/vi/develop/nova/faucet/index.html +++ b/vi/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/general/index.html b/vi/develop/nova/general/index.html index 056b200a0cc..19a467f8cf8 100644 --- a/vi/develop/nova/general/index.html +++ b/vi/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/foundry/index.html b/vi/develop/nova/guides/foundry/index.html index 68da193e742..c02b0f46241 100644 --- a/vi/develop/nova/guides/foundry/index.html +++ b/vi/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/hardhat/index.html b/vi/develop/nova/guides/hardhat/index.html index 98afbece826..b60afbd7a74 100644 --- a/vi/develop/nova/guides/hardhat/index.html +++ b/vi/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/local-development/index.html b/vi/develop/nova/guides/local-development/index.html index 79a8fb1101c..1cbcd454ab1 100644 --- a/vi/develop/nova/guides/local-development/index.html +++ b/vi/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/remix/index.html b/vi/develop/nova/guides/remix/index.html index ce7bff83a04..131ff688d5b 100644 --- a/vi/develop/nova/guides/remix/index.html +++ b/vi/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/index.html b/vi/develop/nova/index.html index a5488ec860e..7e0cdbb088e 100644 --- a/vi/develop/nova/index.html +++ b/vi/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/introduction/index.html b/vi/develop/nova/introduction/index.html index 1f525c95af2..976a30c2d1d 100644 --- a/vi/develop/nova/introduction/index.html +++ b/vi/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/metamask/index.html b/vi/develop/nova/metamask/index.html index 013522c5b2f..bfda444fa7b 100644 --- a/vi/develop/nova/metamask/index.html +++ b/vi/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/cluster/index.html b/vi/farming/advanced-cli/cluster/index.html index 06518bfc47c..3f34a3825ee 100644 --- a/vi/farming/advanced-cli/cluster/index.html +++ b/vi/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/install/index.html b/vi/farming/advanced-cli/install/index.html index 3777bdc18fe..efe16d798a1 100644 --- a/vi/farming/advanced-cli/install/index.html +++ b/vi/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • Start the node using the command below. Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. Ensure you copy the entire command:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • note

    Using run, setting --base-path and specifying --chain is mandatory.

    @@ -58,7 +58,7 @@
    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    You should see output similar to this in your terminal:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -68,8 +68,8 @@

    You Are
    Windows No Output Bug

    If you face an error where the node outputs nothing and no error code is given it is likely you just need to install the latest Visual C++ Redistributable package here

    Step 1: Download the Advanced CLI Executables


    - - + +

    Step 2: Start Advanced CLI Node


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -79,7 +79,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -90,7 +90,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -101,7 +101,7 @@

    Minimum macOS Version

    The minimum support macOS version is version 12+

    Step 1: Download Advanced CLI Executables


    - +

    Step 2: Start Advanced CLI Node


    warning

    When attempting to start the node, you may be prompted: Click on cancel instead of moving it to trash. @@ -112,13 +112,13 @@

  • We will then start the node using the following command
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. You should see something similar in the terminal:
    2. @@ -128,7 +128,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. You should see something similar in the terminal:
    @@ -146,8 +146,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/vi/farming/advanced-cli/taurus/index.html b/vi/farming/advanced-cli/taurus/index.html index 5c2f3ec84fb..374147f09c9 100644 --- a/vi/farming/advanced-cli/taurus/index.html +++ b/vi/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/tips/index.html b/vi/farming/advanced-cli/tips/index.html index fb13ad61393..e608fdc98a8 100644 --- a/vi/farming/advanced-cli/tips/index.html +++ b/vi/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/common-problems/index.html b/vi/farming/common-problems/index.html index e2c6dcb202d..538f3d5588f 100644 --- a/vi/farming/common-problems/index.html +++ b/vi/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    Common Problems

    While the aim is to deliver software free of bugs, users may encounter certain errors. Some of these can be safely ignored, while others require attention. If you're still experiencing issues, check out our forums or visit our Discord server for assistance.

    Program Issues

    These errors and warnings are tied to specific components. In this section, we will highlight known issues, offer any available remediation steps to address them, and specify their severity levels. 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 This error is specifically related to the telemetry server. It may occur occasionally, but it has no impact on farming operations and can be safely ignored.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 This situation arises when two or more valid blocks are created at the same height in the blockchain. Initially, network nodes may disagree on which block to add to the chain, resulting in multiple temporary forks. Once this disagreement is resolved, the blocks from the discarded fork become orphaned, and the chain reorganizes to incorporate the blocks from the winning fork.

    This should resolve on its own.

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 This warning message should not affect your rewards or the operation of your node. It's just a log message indicating the normal operation of the network.

    Last Confirmed: mainnet-2024-nov-13

    Unexpected Behavior

    These unexpected behaviors are not linked to specific components. In this section, we will outline common issues and provide any available remediation steps to address them.

    No Output and Missing Error Codes

    If you encounter a situation in Windows where the node produces no output and does not display any error code, it is likely that you simply need to install the latest version of the Visual C++ Redistributable package.

    diff --git a/vi/farming/guides/gpu-plotter/index.html b/vi/farming/guides/gpu-plotter/index.html index 91fb4dbd896..4d922f9b4c6 100644 --- a/vi/farming/guides/gpu-plotter/index.html +++ b/vi/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/grafana-dashboard/index.html b/vi/farming/guides/grafana-dashboard/index.html index 086efc55df7..7250cf8d0c9 100644 --- a/vi/farming/guides/grafana-dashboard/index.html +++ b/vi/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/index.html b/vi/farming/guides/index.html index 39a4c4196e1..5452903a097 100644 --- a/vi/farming/guides/index.html +++ b/vi/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/port-config/index.html b/vi/farming/guides/port-config/index.html index eeccc3c1493..93acdae1d49 100644 --- a/vi/farming/guides/port-config/index.html +++ b/vi/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/verified-farmer/index.html b/vi/farming/guides/verified-farmer/index.html index a5d83385cd8..2abaf104f93 100644 --- a/vi/farming/guides/verified-farmer/index.html +++ b/vi/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/intro/index.html b/vi/farming/intro/index.html index dbe1c91109b..05096377899 100644 --- a/vi/farming/intro/index.html +++ b/vi/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/space-acres/install/index.html b/vi/farming/space-acres/install/index.html index ce6ed1d1416..e85cf53043c 100644 --- a/vi/farming/space-acres/install/index.html +++ b/vi/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/space-acres/translate/index.html b/vi/farming/space-acres/translate/index.html index c5faa5c93b6..22b904f706a 100644 --- a/vi/farming/space-acres/translate/index.html +++ b/vi/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/timekeeper/index.html b/vi/farming/timekeeper/index.html index 77d723b267c..db195b66050 100644 --- a/vi/farming/timekeeper/index.html +++ b/vi/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/index.html b/vi/index.html index 0782f6c5009..b95aa88b852 100644 --- a/vi/index.html +++ b/vi/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/academy/index.html b/vi/learn/academy/index.html index 2b344060966..2a78d065704 100644 --- a/vi/learn/academy/index.html +++ b/vi/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/intro/index.html b/vi/learn/intro/index.html index 849c53c7ebc..f9746ff0949 100644 --- a/vi/learn/intro/index.html +++ b/vi/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/security/index.html b/vi/learn/security/index.html index 0c30932799d..92d3f2d8e6a 100644 --- a/vi/learn/security/index.html +++ b/vi/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/markdown-page/index.html b/vi/markdown-page/index.html index 07db4fcde4f..2b05f1b9fd6 100644 --- a/vi/markdown-page/index.html +++ b/vi/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/community/resources/index.html b/vi/participate/community/resources/index.html index ee683705c84..9e7be103aa5 100644 --- a/vi/participate/community/resources/index.html +++ b/vi/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/community/tools/index.html b/vi/participate/community/tools/index.html index 984b09ce73a..2a5ff22553d 100644 --- a/vi/participate/community/tools/index.html +++ b/vi/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/code-of-conduct/index.html b/vi/participate/contribute/code-of-conduct/index.html index afcebf4f86b..79e713f3cc6 100644 --- a/vi/participate/contribute/code-of-conduct/index.html +++ b/vi/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/intro/index.html b/vi/participate/contribute/intro/index.html index 5a0bd8affaa..06b781e51ab 100644 --- a/vi/participate/contribute/intro/index.html +++ b/vi/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/translate/index.html b/vi/participate/contribute/translate/index.html index 572a7b2e7e3..900939d3ff4 100644 --- a/vi/participate/contribute/translate/index.html +++ b/vi/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/intro/index.html b/vi/staking/intro/index.html index b5b7687d9e6..bd926246ef9 100644 --- a/vi/staking/intro/index.html +++ b/vi/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/operator/deregister/index.html b/vi/staking/operator/deregister/index.html index b7165e17076..108ad3cf02f 100644 --- a/vi/staking/operator/deregister/index.html +++ b/vi/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/operator/register/index.html b/vi/staking/operator/register/index.html index 4c2fd2b51b2..6fdc0aa871b 100644 --- a/vi/staking/operator/register/index.html +++ b/vi/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/vi/staking/operator/tips/index.html b/vi/staking/operator/tips/index.html index 06f01452d2f..0d2ebcdd1d7 100644 --- a/vi/staking/operator/tips/index.html +++ b/vi/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/stake/index.html b/vi/staking/stake/index.html index 44eec5f33d8..2b7a793e786 100644 --- a/vi/staking/stake/index.html +++ b/vi/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/wallets/index.html b/vi/wallets/index.html index 0dadca33c54..801343219f3 100644 --- a/vi/wallets/index.html +++ b/vi/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/wallets/polkadot/index.html b/vi/wallets/polkadot/index.html index 17cae9a1844..5214707c96d 100644 --- a/vi/wallets/polkadot/index.html +++ b/vi/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/wallets/subwallet/index.html b/vi/wallets/subwallet/index.html index 37bb23f05fc..f487c86dc9d 100644 --- a/vi/wallets/subwallet/index.html +++ b/vi/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/wallets/index.html b/wallets/index.html index 59c72a6a239..ab3a97818f6 100644 --- a/wallets/index.html +++ b/wallets/index.html @@ -12,8 +12,8 @@ - - + + diff --git a/wallets/polkadot/index.html b/wallets/polkadot/index.html index 5809e639cc2..2bfd1c6a644 100644 --- a/wallets/polkadot/index.html +++ b/wallets/polkadot/index.html @@ -12,8 +12,8 @@ - - + +

    polkadot{.js} extension

    note

    polkadot.js extension is a Substrate/EVM wallet created by the creators of Substrate & Polkadot/Kusama the Parity Team.

    diff --git a/wallets/subwallet/index.html b/wallets/subwallet/index.html index e74d2c7616b..e807f3e509e 100644 --- a/wallets/subwallet/index.html +++ b/wallets/subwallet/index.html @@ -12,8 +12,8 @@ - - + +

    ✨ SubWallet

    note

    SubWallet is a 3rd party Substrate/EVM wallet created by the Subwallet Team.

    This guide will be following the browser extension pathway. There is also a mobile application available for Android and IOS.

    diff --git a/zh/404.html b/zh/404.html index 708a57f078f..71951611534 100644 --- a/zh/404.html +++ b/zh/404.html @@ -12,7 +12,7 @@ - + diff --git a/zh/assets/js/285f32e8.26006354.js b/zh/assets/js/285f32e8.ce1fa969.js similarity index 96% rename from zh/assets/js/285f32e8.26006354.js rename to zh/assets/js/285f32e8.ce1fa969.js index 913d3f6f959..d4921b182f3 100644 --- a/zh/assets/js/285f32e8.26006354.js +++ b/zh/assets/js/285f32e8.ce1fa969.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7188],{8040:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>E,contentTitle:()=>R,default:()=>z,frontMatter:()=>O,metadata:()=>Z,toc:()=>L});var a=s(4848),r=s(8453),t=s(1470),o=s(9365),i=s(1432),c=s(8774),l=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u519c\u6c11\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(\u65e7\u7248CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u519c\u6c11\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(\u65e7\u7248CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-2-\u6b65\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",children:"\u7b2c 2 \u6b65\uff1a\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u6253\u5f00\u7ec8\u7aef\uff0c\u8fdb\u5165\u60a8\u4e0b\u8f7d\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u76ee\u5f55\u3002 \u4f8b\u5982\uff0c\u82e5\u60a8\u5c06\u6587\u4ef6\u4e0b\u8f7d\u5230 ",(0,a.jsx)(n.code,{children:"~/Downloads"}),"\uff0c\u8bf7\u4f7f\u7528\uff1a"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u5c06 farmer \u548c node \u8bbe\u7f6e\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u542f\u52a8\u8282\u70b9\u3002 Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. \u52a1\u5fc5\u590d\u5236\u6574\u4e2a\u547d\u4ee4\uff1a"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["::: note\n\u4f7f\u7528",(0,a.jsx)(n.strong,{children:"run"}),"\u65f6\uff0c\u8bbe\u7f6e --base-path \u5e76\u6307\u5b9a --chain \u662f\u5f3a\u5236\u6027\u7684\u3002\n:::"]}),"\n",(0,a.jsx)(n.p,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u770b\u5230\u7c7b\u4f3c\u7684\u8f93\u51fa\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"\u519c\u573a\u4f4d\u7f6e\u6307\u5357",type:"tip",children:(0,a.jsx)(n.p,{children:"\u5982\u679c\u4f60\u9009\u62e9\u4f7f\u7528\u76f8\u540c\u7684\u9a71\u52a8\u5668\u7528\u4e8e\u5b58\u50a8\u6570\u636e\u5757\u548c\u8282\u70b9\u6570\u636e\u5e93\uff0c\u8bf7\u786e\u4fdd\u81f3\u5c11\u7559\u6709 60 GiB \u7684\u7a7a\u95f2\u7a7a\u95f4\u4ee5\u4fbf\u8282\u70b9\u6570\u636e\u5e93\u589e\u957f\u3002 \u8fd9\u6709\u52a9\u4e8e\u786e\u4fdd\u4f60\u6709\u8db3\u591f\u7684\u7a7a\u95f4\u7528\u4e8e\u7cfb\u7edf\u64cd\u4f5c\u548c\u8282\u70b9\u529f\u80fd\u3002"})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u6253\u5f00\u4e00\u4e2a\u65b0\u7684\u7ec8\u7aef\uff0c\u5e76\u5bfc\u822a\u5230 Subspace \u519c\u6c11\u4e8c\u8fdb\u5236\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55\u3002 \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8\u519c\u6c11\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u770b\u5230\u7c7b\u4f3c\u7684\u8f93\u51fa\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86",children:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86\uff01"}),"\n",(0,a.jsx)(n.p,{children:"\u4e00\u5207\u5c31\u7eea\uff01 \u5728\u60a8\u7684\u8282\u70b9\u540c\u6b65\u540e\uff0c\u7ed8\u56fe\u5c06\u5f00\u59cb\u8fdb\u884c\uff0c\u6bcf\u4e2a\u7ed8\u56fe\u5b8c\u6210\u7684\u6247\u533a\u90fd\u5c06\u81ea\u52a8\u5f00\u59cb\u8015\u4f5c\u5e76\u6709\u8d44\u683c\u83b7\u5f97\u56de\u62a5\u3002"})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"\uff1a\uff1a\u8b66\u544a Windows \u65e0\u8f93\u51fa\u9519\u8bef",type:"caution",children:(0,a.jsxs)(n.p,{children:["\u5982\u679c\u4f60\u9047\u5230\u8282\u70b9\u4e0d\u8f93\u51fa\u4efb\u4f55\u5185\u5bb9\u5e76\u4e14\u6ca1\u6709\u7ed9\u51fa\u9519\u8bef\u4ee3\u7801\u7684\u9519\u8bef\uff0c\u5219\u4f60\u53ef\u80fd\u53ea\u9700\u8981\u5b89\u88c5\u6700\u65b0\u7684 Visual C++ \u53ef\u518d\u53d1\u884c\u7ec4\u4ef6\u5305",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"}),"\u3002"]})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",children:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\u6253\u5f00 ",(0,a.jsx)(n.code,{children:"Powershell"})," (\u6211\u4eec\u4e0d\u5efa\u8bae\u4f7f\u7528\u547d\u4ee4\u63d0\u793a\uff0c\u56e0\u4e3a\u5b83\u7684\u8bed\u6cd5\u7565\u6709\u4e0d\u540c)"]}),"\n",(0,a.jsxs)(n.li,{children:["\u5728\u7ec8\u7aef\u4e2d\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4 ",(0,a.jsx)(n.code,{children:"cd Downloads"})," \u5207\u6362\u5230\u4e0b\u8f7d\u76ee\u5f55"]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u73b0\u5728\u5f00\u59cb farming \u4e86\uff01 \u53ea\u9700\u7b49\u5f85\u60a8\u7684\u8282\u70b9\u5b8c\u5168\u540c\u6b65\uff0c\u5e76\u7b49\u5f85\u60a8\u7684\u519c\u573a\u5b8c\u5168\u7ed8\u5236\u3002"}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function h(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-\u76f8\u5173\u8b66\u544a",children:"macOS \u76f8\u5173\u8b66\u544a\uff1a"}),"\n",(0,a.jsx)(n.admonition,{title:"\u6700\u4f4e macOS \u7248\u672c",type:"caution",children:(0,a.jsx)(n.p,{children:"\u6700\u4f4e\u652f\u6301\u7684 MacOS \u7248\u672c\u662f\u7248\u672c 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",children:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["\u5c1d\u8bd5\u542f\u52a8\u8282\u70b9\u65f6\uff0c\u60a8\u53ef\u80fd\u4f1a\u88ab\u63d0\u793a\uff1a\u70b9\u51fb",(0,a.jsx)(n.code,{children:"cancel"}),"\uff0c\u4e0d\u8981\u5c06\u5176\u79fb\u52a8\u5230\u56de\u6536\u7ad9\u3002\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\n\u5728\u6b64\u4e4b\u540e\uff0c\u53ea\u9700\u91cd\u590d\u60a8\u63d0\u793a\u7684\u6b65\u9aa4(\u6b65\u9aa44\u6216\u6b65\u9aa46)\u3002 \u8fd9\u6b21\u63d0\u793a\u65f6\uff0c\u70b9\u51fb",(0,a.jsx)(n.code,{children:"Open"}),"\u6309\u94ae\u3002"]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\u6253\u5f00\u4f60\u559c\u6b22\u7684\u7ec8\u7aef\uff0c\u5e76\u4f7f\u7528 ",(0,a.jsx)(n.code,{children:"cd Downloads"})," \u5207\u6362\u5230\u4e0b\u8f7d\u76ee\u5f55"]}),"\n",(0,a.jsx)(n.li,{children:"\u7ed9 farmer \u548c node \u6587\u4ef6\u8d4b\u4e88\u53ef\u6267\u884c\u6743\u9650\uff1a"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-06"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-06"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u7136\u540e\uff0c\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8\u8282\u70b9"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-06 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["\u4f7f\u7528",(0,a.jsx)(n.strong,{children:"run"}),"\u65f6\uff0c\u8bbe\u7f6e ",(0,a.jsx)(n.strong,{children:"--base-path"})," \u548c\u6307\u5b9a ",(0,a.jsx)(n.strong,{children:"--chain"})," \u662f\u5f3a\u5236\u6027\u7684\u3002"]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u7136\u540e\uff0c\u6211\u4eec\u5c06\u6253\u5f00\u53e6\u4e00\u4e2a\u7ec8\u7aef\uff0c\u5207\u6362\u5230 Downloads \u76ee\u5f55\uff0c\u7136\u540e\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8 Farmer \u8282\u70b9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u73b0\u5728\u5f00\u59cb farming \u4e86\uff01 \u53ea\u9700\u7b49\u5f85\u60a8\u7684\u8282\u70b9\u5b8c\u5168\u540c\u6b65\uff0c\u5e76\u7b49\u5f85\u60a8\u7684\u519c\u573a\u5b8c\u5168\u7ed8\u5236\u3002"}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}var b=s(4626);function g(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,r.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function f(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}var j=s(6540);const _="compose-generator-form__container_KQ66",y="compose-generator-form__card_CMxH",v="compose-generator-form__input_nR1w",N="compose-generator-form__label_cXGP",w="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",A="compose-generator-form__group_Jx8k",S="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const T=function(){const[e,n]=(0,j.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[r,t]=(0,j.useState)(""),[o,c]=(0,j.useState)([]),[l,d]=(0,j.useState)({}),[u,m]=(0,j.useState)([]),p=e=>{u.includes(e)||m([...u,e])},h=e=>{m(u.filter((n=>n!==e)))};(0,j.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),c(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const r=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(r).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;t(n),d({})}else d(r);else d({...r,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${_} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${y}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:r,name:t}=n;return(0,a.jsxs)("div",{className:A,children:[(0,a.jsxs)("label",{htmlFor:t,className:`text--bold ${N} ${u.includes(t)?S:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>h(t),children:[r,":"]}),(0,a.jsx)("input",{className:v,name:t,placeholder:r,onChange:g,value:e[t]}),l[t]&&(0,a.jsx)("p",{className:I,children:l[t]})]},t)})),(0,a.jsxs)("div",{className:A,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${N} ${u.includes("snapshot")?S:""}`,onMouseEnter:()=>p("snapshot"),onAnimationEnd:()=>h("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:v,name:"snapshot",value:e.snapshot,onChange:g,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${A} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${w}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:r})})]})};function P(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u51c6\u5907\u53c2\u6570",children:"\u7b2c 1 \u6b65\uff1a\u51c6\u5907\u53c2\u6570"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u8bf7\u5728\u63d0\u4f9b\u7684\u8868\u5355\u4e2d\u8f93\u5165\u60a8\u7684\u53c2\u6570\uff0c\u7136\u540e\u70b9\u51fb\u201c\u751f\u6210\u201d\n\u4e0d\u8981\u5fd8\u8bb0\u6307\u5b9a\u60a8\u7684\u5956\u52b1\u5730\u5740\uff0c\u800c\u4e0d\u662f\u4f7f\u7528\u9ed8\u8ba4\u5730\u5740!"}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-2-\u6b65\u586b\u5199\u751f\u6210\u5668",children:"\u7b2c 2 \u6b65\uff1a\u586b\u5199\u751f\u6210\u5668"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(T,{}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65\u6267\u884c-docker-compose",children:"\u7b2c 3 \u6b65\uff1a\u6267\u884c Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u590d\u5236\u751f\u6210\u7684 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u6587\u4ef6\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u521b\u5efa ",(0,a.jsx)(n.code,{children:"subspace"})," \u76ee\u5f55\uff0c\u5e76\u5728\u5176\u4e2d\u521b\u5efa\u6587\u4ef6 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u3002 \u5c06\u751f\u6210\u5668\u7684\u8f93\u51fa\u7c98\u8d34\u5230\u6587\u4ef6\u4e2d\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u73b0\u5728\uff0c\u8f6c\u5230\u76ee\u5f55 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u5e76\u952e\u5165 ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," \u4ee5\u542f\u52a8\u6240\u6709\u5185\u5bb9"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["\u4f60\u53ef\u4ee5\u4f7f\u7528 ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"})," \u8bfb\u53d6\u65e5\u5fd7\uff0c\u5bf9\u4e8e\u5176\u4f59\u7684\u8bfb\u53d6",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker \u5408\u6210 CLI \u53c2\u8003"}),"\u3002"]})]})}function F(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(P,{...e})}):P(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"\u5982\u679c\u4f60\u8fd0\u884c\u7684\u662f\u4e0d\u53d7\u652f\u6301\u7684 Linux \u53d1\u884c\u7248\u6216 CPU \u4f53\u7cfb\u7ed3\u6784\uff0c\u4f60\u53ef\u4ee5\u5c1d\u8bd5\u81ea\u5df1\u4ece\u6e90\u4ee3\u7801\u6784\u5efa\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002"}),"\n",(0,a.jsx)(n.p,{children:"\u6ce8\u610f\uff1a\u8fd9\u4e3b\u8981\u662f\u9488\u5bf9\u7cbe\u901a\u6280\u672f\u7684\u7528\u6237\uff0c\u9664\u975e\u4f60\u77e5\u9053\u4f60\u5728\u505a\u4ec0\u4e48\uff0c\u5426\u5219\u4e0d\u63a8\u8350\u3002\u5728\u8054\u7cfb\u7ef4\u62a4\u4eba\u5458\u4e4b\u524d\uff0c\u8bf7\u5c1d\u8bd5\u5728\u7ebf\u67e5\u627e\u95ee\u9898\u7684\u7b54\u6848\u3002\n\u6ce8\u610f\uff1a\u8fd9\u4e3b\u8981\u662f\u9488\u5bf9\u7cbe\u901a\u6280\u672f\u7684\u7528\u6237\uff0c\u9664\u975e\u4f60\u77e5\u9053\u4f60\u5728\u505a\u4ec0\u4e48\uff0c\u5426\u5219\u4e0d\u63a8\u8350\u3002\u5728\u8054\u7cfb\u7ef4\u62a4\u4eba\u5458\u4e4b\u524d\uff0c\u8bf7\u5c1d\u8bd5\u5728\u7ebf\u67e5\u627e\u95ee\u9898\u7684\u7b54\u6848\u3002\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. \u60a8\u53ef\u4ee5\u5728 ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),"\u9605\u8bfb\u6709\u5173\u6b64\u95ee\u9898\u7684\u66f4\u591a\u4fe1\u606f\u3002 \u6b64\u65f6\uff0c\u89e3\u51b3\u65b9\u6848\u662f\u4f7f\u7528 LLVM + Clang 15 \u5e76\u5c06\u201c-Z build-std\u201d\u6807\u5fd7\u6dfb\u52a0\u5230\u201ccargo build\u201d\u547d\u4ee4\u4e2d\u3002"]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["\u4e00\u65e6\u6210\u529f\uff0c\u4f60\u5c06\u5728\u76ee\u5f55\u4e0b\u627e\u5230\u4e24\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6 ",(0,a.jsx)(n.code,{children:"target/production"}),"\uff0c\u4e4b\u540e\u8bf7\u53c2\u8003\u4e0a\u9762\u6709\u5173\u5982\u4f55\u4f7f\u7528\u5b83\u4eec\u7684\u8bf4\u660e\u3002"]})]})}function C(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"\u5b89\u88c5",sidebar_position:1,description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",slug:"/farming/advanced-cli/install",keywords:["\u519c\u592b","\u8015\u4f5c","CLI","\u4e8c\u8fdb\u5236\u6587\u4ef6","Docker."]},R=void 0,Z={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"\u5b89\u88c5",description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/zh/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u5b89\u88c5",sidebar_position:1,description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",slug:"/farming/advanced-cli/install",keywords:["\u519c\u592b","\u8015\u4f5c","CLI","\u4e8c\u8fdb\u5236\u6587\u4ef6","Docker."]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/zh/farming/space-acres/translate"},next:{title:"\u8015\u79cd\u96c6\u7fa4",permalink:"/zh/farming/advanced-cli/cluster"}},E={},L=[{value:"\u9ad8\u7ea7CLI \u5b89\u88c5\u6307\u5357",id:"\u9ad8\u7ea7cli-\u5b89\u88c5\u6307\u5357",level:2},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u7b2c 2 \u6b65\uff1a\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",id:"\u7b2c-2-\u6b65\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86\uff01",id:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9",id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"macOS \u76f8\u5173\u8b66\u544a\uff1a",id:"macos-\u76f8\u5173\u8b66\u544a",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9",id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u51c6\u5907\u53c2\u6570",id:"\u7b2c-1-\u6b65\u51c6\u5907\u53c2\u6570",level:2},{value:"\u7b2c 2 \u6b65\uff1a\u586b\u5199\u751f\u6210\u5668",id:"\u7b2c-2-\u6b65\u586b\u5199\u751f\u6210\u5668",level:2},{value:"\u7b2c 3 \u6b65\uff1a\u6267\u884c Docker Compose",id:"\u7b2c-3-\u6b65\u6267\u884c-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"\u591a\u4e2a\u53ef\u7528\u7248\u672c",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," \u7248\u672c\u9488\u5bf9Intel Skylake \u548c\u66f4\u65b0\u7684 CPU \u4ee5\u53caAMD Ryzen \u5904\u7406\u5668\u8fdb\u884c\u4e86\u4f18\u5316\u3002 \u6700\u9002\u54082015\u5e74\u4ee5\u540e\u5236\u9020\u7684\u4e2a\u4eba\u7535\u8111\u3002"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," \u4e3aIntel Broadvell\u3001Hashwell\u548c\u66f4\u8001\u7684CPU\u4ee5\u53ca\u5b83\u4eec\u7684AMD\u540c\u7c7b\u4ea7\u54c1\u8bbe\u8ba1\u3002 \u9002\u54082009\u5e74\u81f32015\u5e74\u671f\u95f4\u5efa\u9020\u7684\u7cfb\u7edf\u548c\u4e0d\u652f\u6301 Skylake \u6307\u4ee4\u7684\u865a\u62df\u73af\u5883\u3002"]}),"\n"]}),(0,a.jsxs)(n.p,{children:["\u5173\u4e8e\u6700\u65b0\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u548c\u6e90\u4ee3\u7801\uff0c\u8bf7\u8bbf\u95ee\u6211\u4eec\u7684 ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"})," ",(0,a.jsx)(n.strong,{children:"Releases"})," \u90e8\u5206\u3002"]})]}),"\n",(0,a.jsx)(n.admonition,{title:"\u53ef\u7528\u53c2\u6570",type:"tip",children:(0,a.jsxs)(n.p,{children:["\u4f7f\u7528",(0,a.jsx)(n.code,{children:"--help"}),"\u9009\u9879\u53ef\u4ee5\u83b7\u53d6 ",(0,a.jsx)(n.code,{children:"subspace-node"})," \u548c ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"\u53c2\u6570\u53ca\u5176\u529f\u80fd\u7684\u5b8c\u6574\u5217\u8868\u3002"]})}),"\n",(0,a.jsx)(n.h2,{id:"\u9ad8\u7ea7cli-\u5b89\u88c5\u6307\u5357",children:"\u9ad8\u7ea7CLI \u5b89\u88c5\u6307\u5357"}),"\n",(0,a.jsxs)(n.admonition,{title:"\u9700\u8981 Substrate \u5730\u5740",type:"tip",children:[(0,a.jsxs)(n.p,{children:["\u8981\u4f7f\u7528\u6b64\u8f6f\u4ef6\uff0c\u60a8\u9700\u8981\u4e00\u4e2a Substrate \u94b1\u5305\u5730\u5740\u3002 \u521b\u5efa Substrate \u94b1\u5305\u76f8\u5173\u5e2e\u52a9\uff0c\u8bf7\u53c2\u9605\u6211\u4eec\u7684 \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," \u6216 ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"\u3002"]}),(0,a.jsxs)(n.p,{children:["\u5982\u679c\u4f60\u4ee5\u524d\u6709\u4e00\u4e2a\u4ee5",(0,a.jsx)(n.code,{children:"st"}),"\u5f00\u5934\u7684\u94b1\u5305\u5730\u5740\uff0c \u4f60\u4ecd\u7136\u53ef\u4ee5\u4f7f\u7528\u5b83\uff0c\u6216\u8005\u4f60\u53ef\u4ee5\u5c06\u5b83\u8f6c\u6362\u4e3a\u65b0\u7684 ",(0,a.jsx)(n.code,{children:"su"})," \u524d\u7f00\u3002 \u60a8\u53ef\u4ee5\u4f7f\u7528 ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),"\u5de5\u5177\u8f6c\u6362\u60a8\u73b0\u6709\u7684\u94b1\u5305\u5730\u5740\u3002 \u4ee5\u524d\uff0c\u6211\u4eec\u7684\u6d4b\u8bd5\u7f51\u4f7f\u7528\u524d\u7f00 ",(0,a.jsx)(n.code,{children:"2254"}),"\uff0c\u800cTaurus \u6d4b\u8bd5\u7f51\u548cAutonomys \u4e3b\u7f51\u5219\u4f7f\u7528\u524d\u7f00",(0,a.jsx)(n.code,{children:"6094"}),"\u3002"]})]}),"\n",(0,a.jsx)(n.p,{children:"\u6211\u4eec\u5c06\u63d0\u4f9b\u60a8\u64cd\u4f5c\u7cfb\u7edf\u6240\u9700\u7684\u6587\u4ef6\uff1a"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),"\uff1aSubspace \u534f\u8bae\u7684\u8282\u70b9\u5b9e\u73b0\u3002"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),"\uff1a\u7ba1\u7406\u7ed8\u56fe\u3001\u91cd\u65b0\u7ed8\u56fe\u548c\u8015\u79cd\u5956\u52b1\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(t.A,{groupId:"\u64cd\u4f5c\u7cfb\u7edf",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(p,{})}),(0,a.jsx)(o.A,{value:"macOS",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(f,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(F,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsxs)(n.admonition,{title:"\u8015\u79cd\u591a\u5757\u571f\u5730",type:"tip",children:[(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})}),(0,a.jsx)(n.admonition,{title:"\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u540c\u6b65\uff0c\u7ed8\u56fe\u548c\u8015\u79cd\u7684\u4fe1\u606f",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})})]}),"\n",(0,a.jsx)(n.admonition,{title:"\u7559\u4e0b\u53cd\u9988\u4fe1\u606f\uff01",type:"info",children:(0,a.jsxs)(n.p,{children:["\u901a\u8fc7\u5206\u4eab\u60a8\u7684 ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"\u53cd\u9988"})," \u5e2e\u52a9\u6211\u4eec\u6539\u8fdb\u3002 \u6211\u4eec\u6e34\u671b\u542c\u5230\u4f60\u4eec\u7684\u58f0\u97f3\u5e76\u505a\u7684\u66f4\u597d\uff01"]})})]})}function z(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const r={tabItem:"tabItem_Ymn6"};var t=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(r.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>v});var a=s(6540),r=s(8215),t=s(3104),o=s(6347),i=s(205),c=s(7485),l=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:r}}=e;return{value:n,label:s,attributes:a,default:r}}))}(s);return function(e){const n=(0,l.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function p(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function h(e){let{queryString:n=!1,groupId:s}=e;const r=(0,o.W6)(),t=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(t),(0,a.useCallback)((e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})}),[t,r])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,t=m(e),[o,c]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:t}))),[l,u]=h({queryString:s,groupId:r}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,t]=(0,d.Dv)(s);return[r,(0,a.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:r}),g=(()=>{const e=l??x;return p({value:e,tabValues:t})?e:null})();(0,i.A)((()=>{g&&c(g)}),[g]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),b(e)}),[u,b,t]),tabValues:t}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function j(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:l}=(0,t.a_)(),d=e=>{const n=e.currentTarget,s=c.indexOf(n),r=i[s].value;r!==a&&(l(n),o(r))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:t}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:u,onClick:d,...t,className:(0,r.A)("tabs__item",g.tabItem,t?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function _(e){let{lazy:n,children:s,selectedValue:t}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function y(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,f.jsx)(j,{...n,...e}),(0,f.jsx)(_,{...n,...e})]})}function v(e){const n=(0,b.A)();return(0,f.jsx)(y,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),r=s(1432);const t={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[c,l]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,p]=(0,a.useState)([]),h=e=>{m.includes(e)||p([...m,e])},x=e=>{p(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const r=g();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(r).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;l(s)})(),u({})):u(r):u({...r,rewardAddress:"Please enter your reward address"})},g=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},j=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${t["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${t["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:t["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>x(r),children:[a,":"]}),(0,o.jsx)("input",{className:t["systemd-service-generator-form__input"],name:r,placeholder:a,onChange:f,value:e[r]}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>x(r),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${t["systemd-service-generator-form__checkbox"]} ${t["systemd-service-generator-form__input"]}`,name:r,onChange:j,type:"checkbox",checked:"on"===e[r]?"checked":""}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)}))]}),(0,o.jsx)("div",{className:`${t["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${t["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-farmer.service",children:c})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7188],{8040:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>E,contentTitle:()=>R,default:()=>z,frontMatter:()=>O,metadata:()=>Z,toc:()=>L});var a=s(4848),r=s(8453),t=s(1470),o=s(9365),i=s(1432),c=s(8774),l=s(5648);function d(e){const n={admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u519c\u6c11\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(\u65e7\u7248CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u519c\u6c11\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(\u65e7\u7248CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"\u8282\u70b9\u53ef\u6267\u884c\u6587\u4ef6"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-2-\u6b65\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",children:"\u7b2c 2 \u6b65\uff1a\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u6253\u5f00\u7ec8\u7aef\uff0c\u8fdb\u5165\u60a8\u4e0b\u8f7d\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u76ee\u5f55\u3002 \u4f8b\u5982\uff0c\u82e5\u60a8\u5c06\u6587\u4ef6\u4e0b\u8f7d\u5230 ",(0,a.jsx)(n.code,{children:"~/Downloads"}),"\uff0c\u8bf7\u4f7f\u7528\uff1a"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"cd ~/Downloads\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u5c06 farmer \u548c node \u8bbe\u7f6e\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13\nchmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13\n"})}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u542f\u52a8\u8282\u70b9\u3002 Replace ",(0,a.jsx)(n.code,{children:""})," with the path where you want to store the node database and ",(0,a.jsx)(n.code,{children:""})," with a nickname of your choice. \u52a1\u5fc5\u590d\u5236\u6574\u4e2a\u547d\u4ee4\uff1a"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path "" \\\n --name "" \\\n --farmer\n'})}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["::: note\n\u4f7f\u7528",(0,a.jsx)(n.strong,{children:"run"}),"\u65f6\uff0c\u8bbe\u7f6e --base-path \u5e76\u6307\u5b9a --chain \u662f\u5f3a\u5236\u6027\u7684\u3002\n:::"]}),"\n",(0,a.jsx)(n.p,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u770b\u5230\u7c7b\u4f3c\u7684\u8f93\u51fa\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2024-09-04T06:42:56.744203Z INFO subspace_node::commands::run: Subspace\n2024-09-04T06:42:56.744231Z INFO subspace_node::commands::run: \u270c\ufe0f version 0.1.0-5c484f36890\n2024-09-04T06:42:56.744235Z INFO subspace_node::commands::run: \u2764\ufe0f by Subspace Labs \n2024-09-04T06:42:56.744238Z INFO subspace_node::commands::run: \ud83d\udccb Chain specification: Autonomys Mainnet\n2024-09-04T06:42:56.744241Z INFO subspace_node::commands::run: \ud83c\udff7 Node name: cool-farmer-name\n2024-09-04T06:42:56.744243Z INFO subspace_node::commands::run: \ud83d\udcbe Node path: /opt/autonomys\n2024-09-04T06:43:00.165801Z INFO Consensus: subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWB>\n2024-09-04T06:43:00.166299Z INFO Consensus: libp2p_swarm: local_peer_id=12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.166467Z INFO Consensus: subspace_service: Subspace networking initialized: Node ID is 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167026Z INFO Consensus: block_relay: relay::consensus block server: starting\n2024-09-04T06:43:00.167401Z INFO Consensus: sub-libp2p: \ud83c\udff7 Local node identity is: 12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.167424Z INFO Consensus: sub-libp2p: Running libp2p network backend\n2024-09-04T06:43:00.167447Z INFO Consensus: subspace_service: DSN listening on /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.171109Z INFO Consensus: subspace: \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2024-09-04T06:43:00.174544Z INFO Consensus: sc_consensus_subspace::archiver: Resuming archiver from last archived block last_archived_block_number=3124818\n2024-09-04T06:43:00.174699Z INFO Consensus: sc_consensus_subspace::archiver: Archiving already produced blocks 3124819..=3131493\n2024-09-04T06:43:00.176495Z INFO Consensus: subspace_service: DSN listening on /ip4/192.168.0.101/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:00.190399Z INFO Consensus: subspace_service::task_spawner: \ud83d\udce6 Highest known block at #3131593\n2024-09-04T06:43:00.191139Z INFO Consensus: sc_rpc_server: Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]\n2024-09-04T06:43:00.192326Z INFO subspace_metrics: Metrics server started. endpoints=[0.0.0.0:9091]\n2024-09-04T06:43:00.192353Z INFO actix_server::builder: starting 2 workers\n2024-09-04T06:43:00.192448Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-04T06:43:00.658988Z INFO Consensus: sub-libp2p: \ud83d\udd0d Discovered new external address for our node: /ip4/1.2.3.4/tcp/30333/p2p/12D3KooWB6VSys21gqsCGxVKkjYXk8kpoyTCkp5ogcncmMFFsaN1\n2024-09-04T06:43:02.172777Z INFO Consensus: subspace_service::sync_from_dsn: Received notification to sync from DSN reason=WentOnlineSubstrate\n2024-09-04T06:43:05.192676Z INFO Consensus: substrate: \ud83d\udca4 Idle (6 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 13.7kiB/s \u2b06 5.2kiB/s\n2024-09-04T06:43:10.193308Z INFO Consensus: substrate: \ud83d\udca4 Idle (10 peers), best: #3131593 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 34.8kiB/s \u2b06 3.6kiB/s\n2024-09-04T06:43:40.197094Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131599 (21 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 53.9kiB/s \u2b06 10.5kiB/s\n2024-09-04T06:43:45.197731Z INFO Consensus: substrate: \u2699\ufe0f Preparing 0.0 bps, target=#3131600 (22 peers), best: #3131616 (0xb29f\u2026c04e), finalized #3063319 (0x366a\u2026fd89), \u2b07 29.5kiB/s \u2b06 9.7kiB/s\n2024-09-04T06:43:46.197731Z INFO Consensus: substrate: \ud83c\udfc6 Imported #3131616 (0xe5c6\u2026c82e \u2192 0x6bae\u2026d56d)\n2024-09-04T06:44:46.197731Z INFO Consensus: substrate: \ud83d\udca4 Idle (40 peers), best: #3131617 (0x4b91\u20261060), finalized #3063319 (0x366a\u2026fd89), \u2b07 225.3kiB/s \u2b06 23.9kiB/s\n'})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{title:"\u519c\u573a\u4f4d\u7f6e\u6307\u5357",type:"tip",children:(0,a.jsx)(n.p,{children:"\u5982\u679c\u4f60\u9009\u62e9\u4f7f\u7528\u76f8\u540c\u7684\u9a71\u52a8\u5668\u7528\u4e8e\u5b58\u50a8\u6570\u636e\u5757\u548c\u8282\u70b9\u6570\u636e\u5e93\uff0c\u8bf7\u786e\u4fdd\u81f3\u5c11\u7559\u6709 60 GiB \u7684\u7a7a\u95f2\u7a7a\u95f4\u4ee5\u4fbf\u8282\u70b9\u6570\u636e\u5e93\u589e\u957f\u3002 \u8fd9\u6709\u52a9\u4e8e\u786e\u4fdd\u4f60\u6709\u8db3\u591f\u7684\u7a7a\u95f4\u7528\u4e8e\u7cfb\u7edf\u64cd\u4f5c\u548c\u8282\u70b9\u529f\u80fd\u3002"})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsx)(n.p,{children:"\u6253\u5f00\u4e00\u4e2a\u65b0\u7684\u7ec8\u7aef\uff0c\u5e76\u5bfc\u822a\u5230 Subspace \u519c\u6c11\u4e8c\u8fdb\u5236\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55\u3002 \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8\u519c\u6c11\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace with your wallet address\n# Replace with the directory where you want to store the plot\n# Replace with the size of the plot (e.g. 10GB, 2TiB)\n\n./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \\\n --reward-address \\\n path=,size=\n"})}),"\n",(0,a.jsx)(n.p,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u770b\u5230\u7c7b\u4f3c\u7684\u8f93\u51fa\uff1a"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2024-09-09T20:36:25.712636Z INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944\n2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...\n2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully\n2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while\n2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents\n2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:\n2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P\n2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34\n2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014\n2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)\n2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013\n2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...\n2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache\n2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully\n2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers\n2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime\n2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments\n2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications\n2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications\n2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98\n2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache\n2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)\n2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)\n2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization\n2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)\n"})}),"\n"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86",children:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86\uff01"}),"\n",(0,a.jsx)(n.p,{children:"\u4e00\u5207\u5c31\u7eea\uff01 \u5728\u60a8\u7684\u8282\u70b9\u540c\u6b65\u540e\uff0c\u7ed8\u56fe\u5c06\u5f00\u59cb\u8fdb\u884c\uff0c\u6bcf\u4e2a\u7ed8\u56fe\u5b8c\u6210\u7684\u6247\u533a\u90fd\u5c06\u81ea\u52a8\u5f00\u59cb\u8015\u4f5c\u5e76\u6709\u8d44\u683c\u83b7\u5f97\u56de\u62a5\u3002"})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function m(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"windows-specific-warnings",children:"Windows Specific Warnings:"}),"\n",(0,a.jsx)(n.admonition,{title:"\uff1a\uff1a\u8b66\u544a Windows \u65e0\u8f93\u51fa\u9519\u8bef",type:"caution",children:(0,a.jsxs)(n.p,{children:["\u5982\u679c\u4f60\u9047\u5230\u8282\u70b9\u4e0d\u8f93\u51fa\u4efb\u4f55\u5185\u5bb9\u5e76\u4e14\u6ca1\u6709\u7ed9\u51fa\u9519\u8bef\u4ee3\u7801\u7684\u9519\u8bef\uff0c\u5219\u4f60\u53ef\u80fd\u53ea\u9700\u8981\u5b89\u88c5\u6700\u65b0\u7684 Visual C++ \u53ef\u518d\u53d1\u884c\u7ec4\u4ef6\u5305",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170",children:"here"}),"\u3002"]})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})]}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",children:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["A ",(0,a.jsx)(n.code,{children:"Windows Defender Firewall has blocked some features of this app"})," warning may appear.\nThis is because the application is trying to access the internet. This is expected as it is how the farmer talks to other farmers on the network, select ",(0,a.jsx)(n.code,{children:"Allow access"})," to continue setup."]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\u6253\u5f00 ",(0,a.jsx)(n.code,{children:"Powershell"})," (\u6211\u4eec\u4e0d\u5efa\u8bae\u4f7f\u7528\u547d\u4ee4\u63d0\u793a\uff0c\u56e0\u4e3a\u5b83\u7684\u8bed\u6cd5\u7565\u6709\u4e0d\u540c)"]}),"\n",(0,a.jsxs)(n.li,{children:["\u5728\u7ec8\u7aef\u4e2d\uff0c\u6211\u4eec\u5c06\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4 ",(0,a.jsx)(n.code,{children:"cd Downloads"})," \u5207\u6362\u5230\u4e0b\u8f7d\u76ee\u5f55"]}),"\n",(0,a.jsx)(n.li,{children:"We will then start the node using the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-powershell",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n.\\subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe `\n run `\n --chain mainnet `\n --base-path NODE_DATA_PATH `\n --farmer `\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Using ",(0,a.jsx)(n.strong,{children:"run"}),", setting ",(0,a.jsx)(n.strong,{children:"--base-path"})," and specifying ",(0,a.jsx)(n.strong,{children:"--chain"})," is mandatory."]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-windows\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Subspace Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at C:\\Users\\X\\AppData\\Local\\subspace-node-windows-x86_64-snapshot-2022-jan-05.exe\\data\\chains\\subspace_test\\db\\full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"We will then open another terminal, change to the downloads directory as we did before, then start the farmer node with the following command:"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-PowerShell",children:" # Replace `PATH_TO_FARM` with location where you want you store plot files\n # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n .\\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u73b0\u5728\u5f00\u59cb farming \u4e86\uff01 \u53ea\u9700\u7b49\u5f85\u60a8\u7684\u8282\u70b9\u5b8c\u5168\u540c\u6b65\uff0c\u5e76\u7b49\u5f85\u60a8\u7684\u519c\u573a\u5b8c\u5168\u7ed8\u5236\u3002"}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(m,{...e})}):m(e)}function h(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"macos-\u76f8\u5173\u8b66\u544a",children:"macOS \u76f8\u5173\u8b66\u544a\uff1a"}),"\n",(0,a.jsx)(n.admonition,{title:"\u6700\u4f4e macOS \u7248\u672c",type:"caution",children:(0,a.jsx)(n.p,{children:"\u6700\u4f4e\u652f\u6301\u7684 MacOS \u7248\u672c\u662f\u7248\u672c 12+"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7-cli-\u53ef\u6267\u884c\u6587\u4ef6",children:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7 CLI \u53ef\u6267\u884c\u6587\u4ef6"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)("div",{className:`${l.A.buttons} ${l.A.flexContainer}`,children:[(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]}),(0,a.jsxs)(c.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Farmer Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})]}),"\n",(0,a.jsx)(n.h2,{id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",children:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["\u5c1d\u8bd5\u542f\u52a8\u8282\u70b9\u65f6\uff0c\u60a8\u53ef\u80fd\u4f1a\u88ab\u63d0\u793a\uff1a\u70b9\u51fb",(0,a.jsx)(n.code,{children:"cancel"}),"\uff0c\u4e0d\u8981\u5c06\u5176\u79fb\u52a8\u5230\u56de\u6536\u7ad9\u3002\nTo allow execution, go to ",(0,a.jsx)(n.code,{children:"System Preferences -> Security & Privacy -> General"}),", and click on ",(0,a.jsx)(n.code,{children:"allow"}),".\n\u5728\u6b64\u4e4b\u540e\uff0c\u53ea\u9700\u91cd\u590d\u60a8\u63d0\u793a\u7684\u6b65\u9aa4(\u6b65\u9aa44\u6216\u6b65\u9aa46)\u3002 \u8fd9\u6b21\u63d0\u793a\u65f6\uff0c\u70b9\u51fb",(0,a.jsx)(n.code,{children:"Open"}),"\u6309\u94ae\u3002"]})}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["\u6253\u5f00\u4f60\u559c\u6b22\u7684\u7ec8\u7aef\uff0c\u5e76\u4f7f\u7528 ",(0,a.jsx)(n.code,{children:"cd Downloads"})," \u5207\u6362\u5230\u4e0b\u8f7d\u76ee\u5f55"]}),"\n",(0,a.jsx)(n.li,{children:"\u7ed9 farmer \u548c node \u6587\u4ef6\u8d4b\u4e88\u53ef\u6267\u884c\u6743\u9650\uff1a"}),"\n"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-farmer-macos-aarch64-mainnet-2024-nov-13"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.code,{children:"chmod +x subspace-node-macos-aarch64-mainnet-2024-nov-13"})}),"\n"]}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u7136\u540e\uff0c\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8\u8282\u70b9"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:'# Replace `INSERT_YOUR_ID` with a nickname you choose\n# Copy all of the lines below, they are all part of the same command\n./subspace-node-macos-aarch64-mainnet-2024-nov-13 \\\n run \\\n --chain mainnet \\\n --base-path NODE_DATA_PATH \\\n --farmer \\\n --name "INSERT_YOUR_ID"\n'})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["\u4f7f\u7528",(0,a.jsx)(n.strong,{children:"run"}),"\u65f6\uff0c\u8bbe\u7f6e ",(0,a.jsx)(n.strong,{children:"--base-path"})," \u548c\u6307\u5b9a ",(0,a.jsx)(n.strong,{children:"--chain"})," \u662f\u5f3a\u5236\u6027\u7684\u3002"]})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:"2022-02-03 10:52:23 Subspace\n2022-02-03 10:52:23 \u270c\ufe0f version 0.1.0-35cf6f5-x86_64-macos\n2022-02-03 10:52:23 \u2764\ufe0f by Subspace Labs , 2021-2022\n2022-02-03 10:52:23 \ud83d\udccb Chain specification: Autonomys Mainnet\n2022-02-03 10:52:23 \ud83c\udff7 Node name: YOUR_FANCY_NAME\n2022-02-03 10:52:23 \ud83d\udc64 Role: AUTHORITY\n2022-02-03 10:52:23 \ud83d\udcbe Database: RocksDb at /Users/X/Library/Application Support/subspace-node-x86_64-macos-11-snapshot-2024-oct-24/chains/subspace_test/db/full\n2022-02-03 10:52:23 \u26d3 Native runtime: subspace-100 (subspace-1.tx1.au1)\n2022-02-03 10:52:23 \ud83d\udd28 Initializing Genesis block/state (state: 0x22a5\u202617ea, header-hash: 0x6ada\u20260d38)\n2022-02-03 10:52:24 \u23f1 Loaded block-time = 1s from block 0x6ada0792ea62bf3501abc87d92e1ce0e78ddefba66f02973de54144d12ed0d38\n2022-02-03 10:52:24 Starting archiving from genesis\n2022-02-03 10:52:24 Archiving already produced blocks 0..=0\n2022-02-03 10:52:24 \ud83c\udff7 Local node identity is: 12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:24 \ud83e\uddd1\u200d\ud83c\udf3e Starting Subspace Authorship worker\n2022-02-03 10:52:24 \ud83d\udce6 Highest known block at #0\n2022-02-03 10:52:24 \u303d\ufe0f Prometheus exporter started at 127.0.0.1:9615\n2022-02-03 10:52:24 Listening for new connections on 0.0.0.0:9944.\n2022-02-03 10:52:26 \ud83d\udd0d Discovered new external address for our node: /ip4/176.233.17.199/tcp/30333/p2p/12D3KooWBgKtea7MVvraeNyxdPF935pToq1x9VjR1rDeNH1qecXu\n2022-02-03 10:52:29 \u2699\ufe0f Syncing, target=#215883 (2 peers), best: #55 (0xafc7\u2026bccf), finalized #0 (0x6ada\u20260d38), \u2b07 850.1kiB/s \u2b06 1.5kiB/s\n"})}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",children:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u7136\u540e\uff0c\u6211\u4eec\u5c06\u6253\u5f00\u53e6\u4e00\u4e2a\u7ec8\u7aef\uff0c\u5207\u6362\u5230 Downloads \u76ee\u5f55\uff0c\u7136\u540e\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8 Farmer \u8282\u70b9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Replace `PATH_TO_FARM` with location where you want you store plot files\n# Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet\n# Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)\n./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE\n"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u5e94\u8be5\u5728\u7ec8\u7aef\u4e2d\u770b\u5230\u7c7b\u4f3c\u7684\u5185\u5bb9\uff1a"}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{children:'2022-06-02T00:02:04.552120Z INFO subspace_farmer::commands::farm: Connecting to node at ws://127.0.0.1:9944\n2022-06-02T00:02:04.557220Z INFO jsonrpsee_client_transport::ws: Connection established to target: Target { sockaddrs: [], host: "127.0.0.1", host_header: "127.0.0.1:9944", _mode: Plain, path_and_query: "/" }\n2022-06-02T00:02:04.575669Z INFO subspace_farmer::commands::farm: Opening object mapping\n2022-06-02T00:02:04.617553Z INFO subspace_farmer::multi_farming: Opening plot\n2022-06-02T00:02:04.645422Z INFO subspace_farmer::multi_farming: Opening commitments\n2022-06-02T00:02:04.666925Z INFO subspace_farmer::farming: Subscribing to slot info notifications\n2022-06-02T00:02:04.688218Z INFO subspace_farmer::archiving: Subscribing to archived segments\n2022-06-02T00:02:04.689129Z INFO subspace_farmer::commands::farm: WS RPC server listening on 127.0.0.1:9955\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=0\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=1\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=2\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=3\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=4\n2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5\n'})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"\u4f60\u73b0\u5728\u5f00\u59cb farming \u4e86\uff01 \u53ea\u9700\u7b49\u5f85\u60a8\u7684\u8282\u70b9\u5b8c\u5168\u540c\u6b65\uff0c\u5e76\u7b49\u5f85\u60a8\u7684\u519c\u573a\u5b8c\u5168\u7ed8\u5236\u3002"}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}var b=s(4626);function g(e){const n={admonition:"admonition",code:"code",h3:"h3",hr:"hr",p:"p",...(0,r.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.p,{children:"--- "}),"\n",(0,a.jsx)(n.p,{children:"Create a New User for Autonomys:"}),"\n",(0,a.jsx)(n.admonition,{title:"Security risks",type:"warning",children:(0,a.jsx)(n.p,{children:"Running a node as a root user carries significant risks for the system.\nIt is recommended to create a separate user for this purpose."})}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo useradd -m -p ! -s /sbin/nologin -c "" subspace'}),"\n",(0,a.jsx)(n.p,{children:"You can also use an existing user, but having a separate user enhances the security of your server."}),"\n",(0,a.jsx)(n.p,{children:"Switch to the Newly Created User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo su subspace -s /bin/bash"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Executable Files:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/bin"}),"\n",(0,a.jsx)(n.p,{children:"Download the Executable Files, using the appropriate commands:"}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"x86_64 Ubuntu Executables"})}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version 2 - for older processors since ~2009 and some old VMs"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13"})]}),(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Version skylake - For newer processors since ~2015"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13"})]})]}),"\n",(0,a.jsxs)(s,{children:[(0,a.jsx)("summary",{children:(0,a.jsx)(n.p,{children:"Aarch64/64-bit Raspberry Pi Executables"})}),(0,a.jsx)(n.p,{children:"Node:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13"}),(0,a.jsx)(n.p,{children:"Farmer:"}),(0,a.jsx)(i.A,{language:"shell-session",children:"wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13"})]}),"\n",(0,a.jsxs)(n.p,{children:["By default, these commands download the executable files to the ",(0,a.jsx)(n.code,{children:"~/.local/bin"})," directory.\nYou can change the directory by modifying the respective string."]}),"\n",(0,a.jsx)(n.p,{children:"You can use the same commands to update the node."}),"\n",(0,a.jsx)(n.p,{children:"Make the Files Executable:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"chmod +x ~/.local/bin/subspace-node\n chmod +x ~/.local/bin/subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Create a Directory for Node and Farmer Data:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"mkdir -p ~/.local/share"}),"\n",(0,a.jsx)(n.p,{children:"Exit from the User:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"exit"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.p,{children:"Generate Contents for the Service Files, replacing the relevant fields.\nRemember to change the username if setting up the node from a regular user:"}),"\n",(0,a.jsx)(b.E,{}),"\n",(0,a.jsx)(n.p,{children:"Open the Node Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-node.service"}),"\n",(0,a.jsx)(n.p,{children:"Open the Farmer Service File and Paste the Corresponding Generated Content:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"EDITOR=nano sudo -e /etc/systemd/system/subspace-farmer.service"}),"\n",(0,a.jsx)(n.p,{children:"Enable and Start the Node and Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable --now subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"useful-commands",children:"Useful Commands"}),"\n",(0,a.jsx)(n.p,{children:"Start Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Start Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Stop Node:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Stop Farmer:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Enable Node (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Enable Farmer (for automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl enable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Disable Node (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Disable Farmer (to prevent automatic startup on system boot):"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl disable subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Check Node Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"Check Farmer Service Status:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl status subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"View Node Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-node"}),"\n",(0,a.jsx)(n.p,{children:"View Farmer Logs:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo journalctl -f -o cat -u subspace-farmer"}),"\n",(0,a.jsx)(n.p,{children:"Count Farmer Rewards Received in the Last Hour:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:'sudo journalctl -o cat -u subspace-farmer --since="1 hour ago" | grep -i "Successfully signed reward hash" | wc -l'}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(n.h3,{id:"upgrade",children:"Upgrade"}),"\n",(0,a.jsx)(n.p,{children:"To upgrade a node and farmer, first, stop running services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl stop subspace-{node,farmer}"}),"\n",(0,a.jsx)(n.p,{children:"After using the commands from the beginning of the manual, download the executable files of the new release.\nAnd if you installed under a regular user, you will need to switch to that user beforehand."}),"\n",(0,a.jsx)(n.p,{children:"Now you can start the services:"}),"\n",(0,a.jsx)(i.A,{language:"shell-session",children:"sudo systemctl start subspace-{node,farmer}"})]})}function f(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}var j=s(6540);const _="compose-generator-form__container_KQ66",y="compose-generator-form__card_CMxH",v="compose-generator-form__input_nR1w",N="compose-generator-form__label_cXGP",w="compose-generator-form__button--primary_Wb3a",k="compose-generator-form__grid_pdyr",A="compose-generator-form__group_Jx8k",S="compose-generator-form__label--glow_xUeT",I="compose-generator-form__text--error_b8Ag";const T=function(){const[e,n]=(0,j.useState)({nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",nodeName:"subspace",snapshot:"",nodeData:"",farmerData:"",rewardAddress:"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p",plotSize:"100G",arch:"x86_64"}),s="mainnet",[r,t]=(0,j.useState)(""),[o,c]=(0,j.useState)([]),[l,d]=(0,j.useState)({}),[u,m]=(0,j.useState)([]),p=e=>{u.includes(e)||m([...u,e])},h=e=>{m(u.filter((n=>n!==e)))};(0,j.useEffect)((()=>{let e=!0;return fetch("https://api.github.com/repos/subspace/subspace/releases").then((e=>{if(!e.ok)throw new Error("Failed to fetch GitHub releases");return e.json()})).then((a=>{if(e){const e=a.map((e=>e.tag_name)).filter((e=>RegExp(`^${s}.*$`).test(e)));n((n=>({...n,snapshot:e[0]}))),c(e)}})).then((()=>{e&&x({skipRewardAddressCheck:!0})})).catch((e=>{d({fetchError:e.message})})),()=>{e=!1}}),[]);const x=function(n){let{skipRewardAddressCheck:a=!1}=void 0===n?{}:n;const r=b();if(a||"sub55p3aScFJeey32VWnqjYeHaGYE59Nvmt4DMWdTBfDtsq2p"!==e.rewardAddress)if(0===Object.keys(r).length){const n=`services:\n node:\n image: ghcr.io/autonomys/node:${e.snapshot}\n volumes:\n - ${e.nodeData?e.nodeData:"node-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.nodePort}:30333/tcp"\n - "0.0.0.0:${e.nodeDsnPort}:30433/tcp"\n restart: unless-stopped\n command:\n [\n "run",\n "--chain", "${s}",\n "--base-path", "/var/subspace",\n "--listen-on", "/ip4/0.0.0.0/tcp/30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n "--rpc-cors", "all",\n "--rpc-methods", "unsafe",\n "--rpc-listen-on", "0.0.0.0:9944",\n "--farmer",\n "--name", "${e.nodeName}"\n ]\n healthcheck:\n timeout: 5s\n interval: 30s\n retries: 60\n\n farmer:\n depends_on:\n node:\n condition: service_healthy\n image: ghcr.io/autonomys/farmer:${e.snapshot}\n volumes:\n - ${e.farmerData?e.farmerData:"farmer-data"}:/var/subspace:rw\n ports:\n - "0.0.0.0:${e.farmerPort}:30533/tcp"\n restart: unless-stopped\n command:\n [\n "farm",\n "--node-rpc-url", "ws://node:9944",\n "--listen-on", "/ip4/0.0.0.0/tcp/30533",\n "--reward-address", "${e.rewardAddress}",\n "path=/var/subspace,size=${e.plotSize}"\n ]\n${e.nodeData&&e.farmerData?"":"volumes:"}${e.nodeData?"":"\n node-data:"}${e.farmerData?"":"\n farmer-data:"} `;t(n),d({})}else d(r);else d({...r,rewardAddress:"Please enter your reward address"})},b=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3]|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^(st|su)[A-Za-z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),n},g=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))};return(0,a.jsxs)("div",{className:`container ${_} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||x()},children:[(0,a.jsx)("h2",{className:"text--center margin-bottom--m",children:"Docker Compose File Generator"}),(0,a.jsx)("div",{className:`card ${y}`,children:(0,a.jsxs)("div",{className:"card__body",children:[(0,a.jsxs)("div",{className:k,children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data (Optional)",name:"nodeData"},{label:"Farmer Data (Optional)",name:"farmerData"}].map(((n,s)=>{let{label:r,name:t}=n;return(0,a.jsxs)("div",{className:A,children:[(0,a.jsxs)("label",{htmlFor:t,className:`text--bold ${N} ${u.includes(t)?S:""}`,onMouseEnter:()=>p(t),onAnimationEnd:()=>h(t),children:[r,":"]}),(0,a.jsx)("input",{className:v,name:t,placeholder:r,onChange:g,value:e[t]}),l[t]&&(0,a.jsx)("p",{className:I,children:l[t]})]},t)})),(0,a.jsxs)("div",{className:A,children:[(0,a.jsx)("label",{htmlFor:"snapshot",className:`text--bold ${N} ${u.includes("snapshot")?S:""}`,onMouseEnter:()=>p("snapshot"),onAnimationEnd:()=>h("snapshot"),children:"Snapshot:"}),(0,a.jsx)("select",{className:v,name:"snapshot",value:e.snapshot,onChange:g,children:o.map((e=>(0,a.jsx)("option",{value:e,children:e},e)))})]},"snapshot")]}),(0,a.jsx)("div",{className:`${A} text--center`,children:(0,a.jsx)("button",{className:`button button--primary button--lg ${w}`,onClick:x,children:"Generate"})})]})}),(0,a.jsx)("div",{className:"margin-top--lg container",children:(0,a.jsx)(i.A,{language:"yaml",title:"docker-compose.yaml",children:r})})]})};function P(e){const n={a:"a",code:"code",h2:"h2",hr:"hr",li:"li",ol:"ol",p:"p",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"\u7b2c-1-\u6b65\u51c6\u5907\u53c2\u6570",children:"\u7b2c 1 \u6b65\uff1a\u51c6\u5907\u53c2\u6570"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsx)(n.li,{children:"\u8bf7\u5728\u63d0\u4f9b\u7684\u8868\u5355\u4e2d\u8f93\u5165\u60a8\u7684\u53c2\u6570\uff0c\u7136\u540e\u70b9\u51fb\u201c\u751f\u6210\u201d\n\u4e0d\u8981\u5fd8\u8bb0\u6307\u5b9a\u60a8\u7684\u5956\u52b1\u5730\u5740\uff0c\u800c\u4e0d\u662f\u4f7f\u7528\u9ed8\u8ba4\u5730\u5740!"}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-2-\u6b65\u586b\u5199\u751f\u6210\u5668",children:"\u7b2c 2 \u6b65\uff1a\u586b\u5199\u751f\u6210\u5668"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)(T,{}),"\n",(0,a.jsx)(n.h2,{id:"\u7b2c-3-\u6b65\u6267\u884c-docker-compose",children:"\u7b2c 3 \u6b65\uff1a\u6267\u884c Docker Compose"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u590d\u5236\u751f\u6210\u7684 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u6587\u4ef6\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u521b\u5efa ",(0,a.jsx)(n.code,{children:"subspace"})," \u76ee\u5f55\uff0c\u5e76\u5728\u5176\u4e2d\u521b\u5efa\u6587\u4ef6 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u3002 \u5c06\u751f\u6210\u5668\u7684\u8f93\u51fa\u7c98\u8d34\u5230\u6587\u4ef6\u4e2d\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:["\n",(0,a.jsxs)(n.p,{children:["\u73b0\u5728\uff0c\u8f6c\u5230\u76ee\u5f55 ",(0,a.jsx)(n.code,{children:"docker-compose.yaml"})," \u5e76\u952e\u5165 ",(0,a.jsx)(n.code,{children:"docker compose up -d"})," \u4ee5\u542f\u52a8\u6240\u6709\u5185\u5bb9"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["\u4f60\u53ef\u4ee5\u4f7f\u7528 ",(0,a.jsx)(n.code,{children:"docker compose logs --tail=1000 -f"})," \u8bfb\u53d6\u65e5\u5fd7\uff0c\u5bf9\u4e8e\u5176\u4f59\u7684\u8bfb\u53d6",(0,a.jsx)(n.a,{href:"https://docs.docker.com/compose/reference/",children:"Docker \u5408\u6210 CLI \u53c2\u8003"}),"\u3002"]})]})}function F(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(P,{...e})}):P(e)}function D(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"build-from-source-linux",children:"Build from source (Linux)"}),"\n",(0,a.jsx)(n.p,{children:"\u5982\u679c\u4f60\u8fd0\u884c\u7684\u662f\u4e0d\u53d7\u652f\u6301\u7684 Linux \u53d1\u884c\u7248\u6216 CPU \u4f53\u7cfb\u7ed3\u6784\uff0c\u4f60\u53ef\u4ee5\u5c1d\u8bd5\u81ea\u5df1\u4ece\u6e90\u4ee3\u7801\u6784\u5efa\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002"}),"\n",(0,a.jsx)(n.p,{children:"\u6ce8\u610f\uff1a\u8fd9\u4e3b\u8981\u662f\u9488\u5bf9\u7cbe\u901a\u6280\u672f\u7684\u7528\u6237\uff0c\u9664\u975e\u4f60\u77e5\u9053\u4f60\u5728\u505a\u4ec0\u4e48\uff0c\u5426\u5219\u4e0d\u63a8\u8350\u3002\u5728\u8054\u7cfb\u7ef4\u62a4\u4eba\u5458\u4e4b\u524d\uff0c\u8bf7\u5c1d\u8bd5\u5728\u7ebf\u67e5\u627e\u95ee\u9898\u7684\u7b54\u6848\u3002\n\u6ce8\u610f\uff1a\u8fd9\u4e3b\u8981\u662f\u9488\u5bf9\u7cbe\u901a\u6280\u672f\u7684\u7528\u6237\uff0c\u9664\u975e\u4f60\u77e5\u9053\u4f60\u5728\u505a\u4ec0\u4e48\uff0c\u5426\u5219\u4e0d\u63a8\u8350\u3002\u5728\u8054\u7cfb\u7ef4\u62a4\u4eba\u5458\u4e4b\u524d\uff0c\u8bf7\u5c1d\u8bd5\u5728\u7ebf\u67e5\u627e\u95ee\u9898\u7684\u7b54\u6848\u3002\nPlease try to find answer to your question online before reaching out to maintainers."}),"\n",(0,a.jsxs)(n.p,{children:["You'll have to have ",(0,a.jsx)(n.a,{href:"https://rustup.rs/",children:"Rust toolchain"})," installed as well as LLVM, Clang and CMake in addition to usual developer tooling (Ubuntu example):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-text",children:"sudo apt-get install llvm clang cmake\n"})}),"\n",(0,a.jsx)(n.admonition,{title:"LLVM + Clang 16",type:"warning",children:(0,a.jsxs)(n.p,{children:["The build with LLVM + Clang 16 ends with ",(0,a.jsx)(n.code,{children:"UnknownOpcode(192)"})," error due to breaking changes concerning WASM in LLVM 16. \u60a8\u53ef\u4ee5\u5728 ",(0,a.jsx)(n.a,{href:"https://github.com/paritytech/substrate/issues/13636",children:"here"}),"\u9605\u8bfb\u6709\u5173\u6b64\u95ee\u9898\u7684\u66f4\u591a\u4fe1\u606f\u3002 \u6b64\u65f6\uff0c\u89e3\u51b3\u65b9\u6848\u662f\u4f7f\u7528 LLVM + Clang 15 \u5e76\u5c06\u201c-Z build-std\u201d\u6807\u5fd7\u6dfb\u52a0\u5230\u201ccargo build\u201d\u547d\u4ee4\u4e2d\u3002"]})}),"\n",(0,a.jsxs)(n.p,{children:["Now clone the source and build snapshot ",(0,a.jsx)(n.code,{children:"snapshot-2023-aug-18"})," (replace occurrences with the snapshot you want to build):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell-session",children:"git clone https://github.com/autonomys/subspace.git\ncd subspace\ngit checkout snapshot-2023-aug-18\ncargo build \\\n --profile production \\\n --bin subspace-node \\\n --bin subspace-farmer\n"})}),"\n",(0,a.jsxs)(n.p,{children:["\u4e00\u65e6\u6210\u529f\uff0c\u4f60\u5c06\u5728\u76ee\u5f55\u4e0b\u627e\u5230\u4e24\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6 ",(0,a.jsx)(n.code,{children:"target/production"}),"\uff0c\u4e4b\u540e\u8bf7\u53c2\u8003\u4e0a\u9762\u6709\u5173\u5982\u4f55\u4f7f\u7528\u5b83\u4eec\u7684\u8bf4\u660e\u3002"]})]})}function C(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(D,{...e})}):D(e)}const O={title:"\u5b89\u88c5",sidebar_position:1,description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",slug:"/farming/advanced-cli/install",keywords:["\u519c\u592b","\u8015\u4f5c","CLI","\u4e8c\u8fdb\u5236\u6587\u4ef6","Docker."]},R=void 0,Z={id:"farming-&-staking/farming/advanced-cli/cli-install",title:"\u5b89\u88c5",description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",sourceDirName:"farming-&-staking/farming/advanced-cli",slug:"/farming/advanced-cli/install",permalink:"/zh/farming/advanced-cli/install",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/advanced-cli/cli-install.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u5b89\u88c5",sidebar_position:1,description:"\u5982\u4f55\u4f7f\u7528 Substrate CLI \u8fd0\u884cAutonomys\u7f51\u7edc\u519c\u6c11\u8282\u70b9",slug:"/farming/advanced-cli/install",keywords:["\u519c\u592b","\u8015\u4f5c","CLI","\u4e8c\u8fdb\u5236\u6587\u4ef6","Docker."]},sidebar:"tutorialSidebar",previous:{title:"Translation Guide",permalink:"/zh/farming/space-acres/translate"},next:{title:"\u8015\u79cd\u96c6\u7fa4",permalink:"/zh/farming/advanced-cli/cluster"}},E={},L=[{value:"\u9ad8\u7ea7CLI \u5b89\u88c5\u6307\u5357",id:"\u9ad8\u7ea7cli-\u5b89\u88c5\u6307\u5357",level:2},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u7b2c 2 \u6b65\uff1a\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",id:"\u7b2c-2-\u6b65\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86\uff01",id:"\u4f60\u6b63\u5728\u8015\u79cd\u4e86",level:2},{value:"Windows Specific Warnings:",id:"windows-specific-warnings",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7\u7684 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7\u7684-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9",id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"macOS \u76f8\u5173\u8b66\u544a\uff1a",id:"macos-\u76f8\u5173\u8b66\u544a",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u4e0b\u8f7d\u9ad8\u7ea7 CLI \u53ef\u6267\u884c\u6587\u4ef6",id:"\u7b2c-1-\u6b65\u4e0b\u8f7d\u9ad8\u7ea7-cli-\u53ef\u6267\u884c\u6587\u4ef6",level:2},{value:"\u6b65\u9aa4 2\uff1a\u542f\u52a8\u9ad8\u7ea7CLI \u8282\u70b9",id:"\u6b65\u9aa4-2\u542f\u52a8\u9ad8\u7ea7cli-\u8282\u70b9",level:2},{value:"\u7b2c 3 \u6b65: \u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",id:"\u7b2c-3-\u6b65-\u542f\u52a8\u9ad8\u7ea7\u547d\u4ee4\u884c\u519c\u6c11\u8282\u70b9",level:2},{value:"Useful Commands",id:"useful-commands",level:3},{value:"Upgrade",id:"upgrade",level:3},{value:"\u7b2c 1 \u6b65\uff1a\u51c6\u5907\u53c2\u6570",id:"\u7b2c-1-\u6b65\u51c6\u5907\u53c2\u6570",level:2},{value:"\u7b2c 2 \u6b65\uff1a\u586b\u5199\u751f\u6210\u5668",id:"\u7b2c-2-\u6b65\u586b\u5199\u751f\u6210\u5668",level:2},{value:"\u7b2c 3 \u6b65\uff1a\u6267\u884c Docker Compose",id:"\u7b2c-3-\u6b65\u6267\u884c-docker-compose",level:2},{value:"Build from source (Linux)",id:"build-from-source-linux",level:3}];function $(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.admonition,{title:"\u591a\u4e2a\u53ef\u7528\u7248\u672c",type:"info",children:[(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Skylake:"})," \u7248\u672c\u9488\u5bf9Intel Skylake \u548c\u66f4\u65b0\u7684 CPU \u4ee5\u53caAMD Ryzen \u5904\u7406\u5668\u8fdb\u884c\u4e86\u4f18\u5316\u3002 \u6700\u9002\u54082015\u5e74\u4ee5\u540e\u5236\u9020\u7684\u4e2a\u4eba\u7535\u8111\u3002"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Legacy (x86-64-v2):"})," \u4e3aIntel Broadvell\u3001Hashwell\u548c\u66f4\u8001\u7684CPU\u4ee5\u53ca\u5b83\u4eec\u7684AMD\u540c\u7c7b\u4ea7\u54c1\u8bbe\u8ba1\u3002 \u9002\u54082009\u5e74\u81f32015\u5e74\u671f\u95f4\u5efa\u9020\u7684\u7cfb\u7edf\u548c\u4e0d\u652f\u6301 Skylake \u6307\u4ee4\u7684\u865a\u62df\u73af\u5883\u3002"]}),"\n"]}),(0,a.jsxs)(n.p,{children:["\u5173\u4e8e\u6700\u65b0\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u548c\u6e90\u4ee3\u7801\uff0c\u8bf7\u8bbf\u95ee\u6211\u4eec\u7684 ",(0,a.jsx)(n.a,{href:"https://github.com/autonomys/subspace/releases",children:"GitHub"})," ",(0,a.jsx)(n.strong,{children:"Releases"})," \u90e8\u5206\u3002"]})]}),"\n",(0,a.jsx)(n.admonition,{title:"\u53ef\u7528\u53c2\u6570",type:"tip",children:(0,a.jsxs)(n.p,{children:["\u4f7f\u7528",(0,a.jsx)(n.code,{children:"--help"}),"\u9009\u9879\u53ef\u4ee5\u83b7\u53d6 ",(0,a.jsx)(n.code,{children:"subspace-node"})," \u548c ",(0,a.jsx)(n.code,{children:"subspace-farmer"}),"\u53c2\u6570\u53ca\u5176\u529f\u80fd\u7684\u5b8c\u6574\u5217\u8868\u3002"]})}),"\n",(0,a.jsx)(n.h2,{id:"\u9ad8\u7ea7cli-\u5b89\u88c5\u6307\u5357",children:"\u9ad8\u7ea7CLI \u5b89\u88c5\u6307\u5357"}),"\n",(0,a.jsxs)(n.admonition,{title:"\u9700\u8981 Substrate \u5730\u5740",type:"tip",children:[(0,a.jsxs)(n.p,{children:["\u8981\u4f7f\u7528\u6b64\u8f6f\u4ef6\uff0c\u60a8\u9700\u8981\u4e00\u4e2a Substrate \u94b1\u5305\u5730\u5740\u3002 \u521b\u5efa Substrate \u94b1\u5305\u76f8\u5173\u5e2e\u52a9\uff0c\u8bf7\u53c2\u9605\u6211\u4eec\u7684 \u2728 ",(0,a.jsx)(n.a,{href:"/wallets/subwallet",children:"SubWallet"})," \u6216 ",(0,a.jsx)(n.a,{href:"/wallets/polkadot",children:"Polkadot.js"}),"\u3002"]}),(0,a.jsxs)(n.p,{children:["\u5982\u679c\u4f60\u4ee5\u524d\u6709\u4e00\u4e2a\u4ee5",(0,a.jsx)(n.code,{children:"st"}),"\u5f00\u5934\u7684\u94b1\u5305\u5730\u5740\uff0c \u4f60\u4ecd\u7136\u53ef\u4ee5\u4f7f\u7528\u5b83\uff0c\u6216\u8005\u4f60\u53ef\u4ee5\u5c06\u5b83\u8f6c\u6362\u4e3a\u65b0\u7684 ",(0,a.jsx)(n.code,{children:"su"})," \u524d\u7f00\u3002 \u60a8\u53ef\u4ee5\u4f7f\u7528 ",(0,a.jsx)(n.a,{href:"https://ss58.org",children:"ss58.org"}),"\u5de5\u5177\u8f6c\u6362\u60a8\u73b0\u6709\u7684\u94b1\u5305\u5730\u5740\u3002 \u4ee5\u524d\uff0c\u6211\u4eec\u7684\u6d4b\u8bd5\u7f51\u4f7f\u7528\u524d\u7f00 ",(0,a.jsx)(n.code,{children:"2254"}),"\uff0c\u800cTaurus \u6d4b\u8bd5\u7f51\u548cAutonomys \u4e3b\u7f51\u5219\u4f7f\u7528\u524d\u7f00",(0,a.jsx)(n.code,{children:"6094"}),"\u3002"]})]}),"\n",(0,a.jsx)(n.p,{children:"\u6211\u4eec\u5c06\u63d0\u4f9b\u60a8\u64cd\u4f5c\u7cfb\u7edf\u6240\u9700\u7684\u6587\u4ef6\uff1a"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-node"}),"\uff1aSubspace \u534f\u8bae\u7684\u8282\u70b9\u5b9e\u73b0\u3002"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"subspace-farmer"}),"\uff1a\u7ba1\u7406\u7ed8\u56fe\u3001\u91cd\u65b0\u7ed8\u56fe\u548c\u8015\u79cd\u5956\u52b1\u3002"]}),"\n"]}),"\n",(0,a.jsxs)(t.A,{groupId:"\u64cd\u4f5c\u7cfb\u7edf",children:[(0,a.jsx)(o.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(o.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",children:(0,a.jsx)(p,{})}),(0,a.jsx)(o.A,{value:"macOS",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(x,{})}),(0,a.jsx)(o.A,{value:"systemd_service",label:"\ud83e\udd16 Linux Service (SystemD)",children:(0,a.jsx)(f,{})}),(0,a.jsx)(o.A,{value:"docker",label:"\ud83d\udc33 Docker",children:(0,a.jsx)(F,{})}),(0,a.jsx)(o.A,{value:"source",label:"\ud83d\udee0\ufe0f Build from Source",children:(0,a.jsx)(C,{})})]}),"\n",(0,a.jsxs)(n.admonition,{title:"\u8015\u79cd\u591a\u5757\u571f\u5730",type:"tip",children:[(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"path=PATH_TO_FARM,size=PLOT_SIZE path=ADDITIONAL_PATH_TO_FARM,size=PLOT_SIZE"})}),(0,a.jsx)(n.admonition,{title:"\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u540c\u6b65\uff0c\u7ed8\u56fe\u548c\u8015\u79cd\u7684\u4fe1\u606f",type:"note",children:(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/network-architecture/networking-protocols#synchronization",children:"Synchronization"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/plotting",children:"Plotting"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://academy.autonomys.xyz/subspace-protocol/consensus/proof-of-archival-storage/farming",children:"Farming"})}),"\n"]})})]}),"\n",(0,a.jsx)(n.admonition,{title:"\u7559\u4e0b\u53cd\u9988\u4fe1\u606f\uff01",type:"info",children:(0,a.jsxs)(n.p,{children:["\u901a\u8fc7\u5206\u4eab\u60a8\u7684 ",(0,a.jsx)(n.a,{href:"https://autonomys.typeform.com/to/tRe4Z0uI",children:"\u53cd\u9988"})," \u5e2e\u52a9\u6211\u4eec\u6539\u8fdb\u3002 \u6211\u4eec\u6e34\u671b\u542c\u5230\u4f60\u4eec\u7684\u58f0\u97f3\u5e76\u505a\u7684\u66f4\u597d\uff01"]})})]})}function z(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)($,{...e})}):$(e)}},9365:(e,n,s)=>{s.d(n,{A:()=>o});s(6540);var a=s(8215);const r={tabItem:"tabItem_Ymn6"};var t=s(4848);function o(e){let{children:n,hidden:s,className:o}=e;return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)(r.tabItem,o),hidden:s,children:n})}},1470:(e,n,s)=>{s.d(n,{A:()=>v});var a=s(6540),r=s(8215),t=s(3104),o=s(6347),i=s(205),c=s(7485),l=s(1682),d=s(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:n,children:s}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:s,attributes:a,default:r}}=e;return{value:n,label:s,attributes:a,default:r}}))}(s);return function(e){const n=(0,l.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function p(e){let{value:n,tabValues:s}=e;return s.some((e=>e.value===n))}function h(e){let{queryString:n=!1,groupId:s}=e;const r=(0,o.W6)(),t=function(e){let{queryString:n=!1,groupId:s}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!s)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return s??null}({queryString:n,groupId:s});return[(0,c.aZ)(t),(0,a.useCallback)((e=>{if(!t)return;const n=new URLSearchParams(r.location.search);n.set(t,e),r.replace({...r.location,search:n.toString()})}),[t,r])]}function x(e){const{defaultValue:n,queryString:s=!1,groupId:r}=e,t=m(e),[o,c]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:s}=e;if(0===s.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:s}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${s.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=s.find((e=>e.default))??s[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:t}))),[l,u]=h({queryString:s,groupId:r}),[x,b]=function(e){let{groupId:n}=e;const s=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,t]=(0,d.Dv)(s);return[r,(0,a.useCallback)((e=>{s&&t.set(e)}),[s,t])]}({groupId:r}),g=(()=>{const e=l??x;return p({value:e,tabValues:t})?e:null})();(0,i.A)((()=>{g&&c(g)}),[g]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:t}))throw new Error(`Can't select invalid tab value=${e}`);c(e),u(e),b(e)}),[u,b,t]),tabValues:t}}var b=s(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(4848);function j(e){let{className:n,block:s,selectedValue:a,selectValue:o,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:l}=(0,t.a_)(),d=e=>{const n=e.currentTarget,s=c.indexOf(n),r=i[s].value;r!==a&&(l(n),o(r))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=c.indexOf(e.currentTarget)+1;n=c[s]??c[0];break}case"ArrowLeft":{const s=c.indexOf(e.currentTarget)-1;n=c[s]??c[c.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":s},n),children:i.map((e=>{let{value:n,label:s,attributes:t}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>c.push(e),onKeyDown:u,onClick:d,...t,className:(0,r.A)("tabs__item",g.tabItem,t?.className,{"tabs__item--active":a===n}),children:s??n},n)}))})}function _(e){let{lazy:n,children:s,selectedValue:t}=e;const o=(Array.isArray(s)?s:[s]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function y(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",g.tabList),children:[(0,f.jsx)(j,{...n,...e}),(0,f.jsx)(_,{...n,...e})]})}function v(e){const n=(0,b.A)();return(0,f.jsx)(y,{...e,children:u(e.children)},String(n))}},4626:(e,n,s)=>{s.d(n,{E:()=>i});var a=s(6540),r=s(1432);const t={"systemd-service-generator-form__container":"systemd-service-generator-form__container_AmZQ","systemd-service-generator-form__card":"systemd-service-generator-form__card_Vfyi","systemd-service-generator-form__input":"systemd-service-generator-form__input_bgaB","systemd-service-generator-form__label":"systemd-service-generator-form__label_FWEC","systemd-service-generator-form__error-text":"systemd-service-generator-form__error-text_QVp3","systemd-service-generator-form__button--primary":"systemd-service-generator-form__button--primary_UhOJ","systemd-service-generator-form__grid":"systemd-service-generator-form__grid_BlKX","systemd-service-generator-form__group":"systemd-service-generator-form__group_WgPW","systemd-service-generator-form__checkbox-group":"systemd-service-generator-form__checkbox-group_p6YU","systemd-service-generator-form__label--glow":"systemd-service-generator-form__label--glow_qySV","glow-effect":"glow-effect__zrg","systemd-service-generator-form__checkbox":"systemd-service-generator-form__checkbox_H2lU","systemd-service-generator-form__text--error":"systemd-service-generator-form__text--error__s06","glow-effect-dark":"glow-effect-dark_foLM"};var o=s(4848);function i(){const[e,n]=(0,a.useState)({nodeBinPath:"/home/subspace/.local/bin/subspace-node",farmerBinPath:"/home/subspace/.local/bin/subspace-farmer",nodeData:"/home/subspace/.local/share/subspace-node",farmerData:"/home/subspace/.local/share/subspace-farmer",nodeName:"subspace",nodePort:"30333",nodeDsnPort:"30433",farmerPort:"30533",rewardAddress:"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP",plotSize:"100G",archival:"off",sandbox:"off",user:"subspace",extraNodeArgs:"",extraFarmerArgs:""}),[s,i]=(0,a.useState)(""),[c,l]=(0,a.useState)(""),[d,u]=(0,a.useState)({}),[m,p]=(0,a.useState)([]),h=e=>{m.includes(e)||p([...m,e])},x=e=>{p(m.filter((n=>n!==e)))};(0,a.useEffect)((()=>{b({skipRewardAddressCheck:!0})}),[]);const b=function(s){let{skipRewardAddressCheck:a=!1}=void 0===s?{}:s;const r=g();a||"st6GBwATPqtBkK5y4uXbV52euszPpFPw7wmkF8FywEqJaf8uP"!==e.rewardAddress?0===Object.keys(r).length?((()=>{"root"!==e.user&&(("/root/.local/share/subspace-node"===e.nodeData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-node$/.test(e.nodeData))&&n((n=>({...n,nodeData:`/home/${e.user}/.local/share/subspace-node`}))),("/root/.local/bin/subspace-node"===e.nodeBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-node$/.test(e.nodeBinPath))&&n((n=>({...n,nodeBinPath:`/home/${e.user}/.local/bin/subspace-node`}))));const s=`[Unit]\nDescription=Subspace Node\nWants=network.target\nAfter=network.target\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.nodeBinPath} \\\n run \\ \n --name ${e.nodeName} \\\n --base-path ${e.nodeData} \\\n --chain mainnet \\\n --farmer \\\n --listen-on /ip4/0.0.0.0/tcp/${e.nodePort} \\\n --dsn-listen-on /ip4/0.0.0.0/tcp/${e.nodeDsnPort} ${""===e.extraNodeArgs?"":"\\\n"} ${e.extraNodeArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;i(s)})(),(()=>{"root"!==e.user&&(("/root/.local/share/subspace-farmer"===e.farmerData||/^\/home\/([^\/\0]+)\/\.local\/share\/subspace-farmer$/.test(e.farmerData))&&n((n=>({...n,farmerData:`/home/${e.user}/.local/share/subspace-farmer`}))),("/root/.local/bin/subspace-farmer"===e.farmerBinPath||/^\/home\/([^\/\0]+)\/\.local\/bin\/subspace-farmer$/.test(e.farmerBinPath))&&n((n=>({...n,farmerBinPath:`/home/${e.user}/.local/bin/subspace-farmer`}))));const s=`[Unit]\nDescription=Subspace Farmer\nWants=network.target\nAfter=network.target\nWants=subspace-node.service\nAfter=subspace-node.service\n\n[Service]\nUser=${e.user}\nGroup=${e.user}\nExecStart=${e.farmerBinPath} \\\n farm \\\n --reward-address ${e.rewardAddress} \\\n --listen-on /ip4/0.0.0.0/tcp/${e.farmerPort} \\\n path=${e.farmerData},size=${e.plotSize} ${""===e.extraFarmerArgs?"":"\\\n"} ${e.extraFarmerArgs}\nKillSignal=SIGINT\nRestart=always\nRestartSec=10\nNice=-5\nLimitNOFILE=100000${"on"===e.sandbox?"\nCapabilityBoundingSet=CAP_NET_BIND_SERVICE\nProtectKernelTunables=true\nProtectKernelModules=true\nProtectControlGroups=true\nProtectKernelLogs=true\nProtectHostname=true\nProtectClock=true\nProtectProc=invisible\nProcSubset=pid\nPrivateTmp=true\nPrivateUsers=true\nPrivateDevices=true\nPrivateIPC=true\nNoNewPrivileges=true\nLockPersonality=true\nRestrictRealtime=true\nRestrictSUIDSGID=true\nRestrictAddressFamilies=AF_INET AF_INET6\nRestrictNamespaces=true\nSystemCallArchitectures=native\nUMask=0077":""}\n\n[Install]\nWantedBy=multi-user.target`;l(s)})(),u({})):u(r):u({...r,rewardAddress:"Please enter your reward address"})},g=()=>{const n={};return/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2}|655[0-2]\d|6553[0-5])$/.test(e.nodePort)||(n.nodePort="Invalid Node Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.nodeDsnPort)||(n.nodeDsnPort="Invalid Node DSN Port"),/^(102[4-9]|10[3-9]\d{1,2}|[2-9]\d{2,3}|[1-5]\d{4,4}|6[0-4]\d{3,3}|65[0-4]\d{2,2]|655[0-2]\d|6553[0-5])$/.test(e.farmerPort)||(n.farmerPort="Invalid Farmer Port"),/^[a-zA-Z0-9_/-]+$/.test(e.nodeName)||(n.nodeName="Invalid Node Name"),/^[a-zA-Z0-9_/-]+$/.test(e.user)||(n.user="Invalid System Username"),/^(\/([^/]*\/?)*)?$/.test(e.nodeData)||(n.nodeData="Invalid Node Data"),/^(\/([^/]*\/?)*)?$/.test(e.farmerData)||(n.farmerData="Invalid Farmer Data"),/^\d+(G|T)?$/.test(e.plotSize)||(n.plotSize="Invalid Plot Size"),/^st[a-zA-Z0-9]{47}$/.test(e.rewardAddress)||(n.rewardAddress="Invalid Reward Address"),/^(\/([^/]*\/?)*)?$/.test(e.nodeBinPath)||(n.nodeBinPath="Invalid Node Binary Path"),/^(\/([^/]*\/?)*)?$/.test(e.farmerBinPath)||(n.farmerBinPath="Invalid Farmer Binary Path"),n},f=e=>{const{name:s,value:a}=e.target;n((e=>({...e,[s]:a})))},j=e=>{const{name:s,checked:a}=e.target;n((e=>({...e,[s]:a?"on":"off"})))};return(0,o.jsxs)("div",{className:`container ${t["systemd-service-generator-form__container"]} margin-vert--lg`,onKeyDown:e=>{"Enter"!==e.key||"input"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()||b()},children:[(0,o.jsx)("h2",{className:"text--center margin-bottom--m",children:"Systemd Service File Generator"}),(0,o.jsx)("div",{className:`card ${t["systemd-service-generator-form__card"]}`,children:(0,o.jsxs)("div",{className:"card__body",children:[(0,o.jsxs)("div",{className:t["systemd-service-generator-form__grid"],children:[[{label:"Node Port",name:"nodePort"},{label:"Node DSN Port",name:"nodeDsnPort"},{label:"Farmer Port",name:"farmerPort"},{label:"Node Name",name:"nodeName"},{label:"Plot Size",name:"plotSize"},{label:"Reward Address",name:"rewardAddress"},{label:"Node Data",name:"nodeData"},{label:"Farmer Data",name:"farmerData"},{label:"Node Binary Path",name:"nodeBinPath"},{label:"Farmer Binary Path",name:"farmerBinPath"},{label:"Extra Node Arguments",name:"extraNodeArgs"},{label:"Extra Farmer Arguments",name:"extraFarmerArgs"},{label:"System User",name:"user"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>x(r),children:[a,":"]}),(0,o.jsx)("input",{className:t["systemd-service-generator-form__input"],name:r,placeholder:a,onChange:f,value:e[r]}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)})),[{label:"Archival",name:"archival"},{label:"Sandbox",name:"sandbox"}].map(((n,s)=>{let{label:a,name:r}=n;return(0,o.jsxs)("div",{className:t["systemd-service-generator-form__checkbox-group"],children:[(0,o.jsxs)("label",{htmlFor:r,className:`text--bold ${t["systemd-service-generator-form__label"]} ${m.includes(r)?t["systemd-service-generator-form__label--glow"]:""}`,onMouseEnter:()=>h(r),onAnimationEnd:()=>x(r),children:[a,":",(0,o.jsx)("br",{})]}),(0,o.jsx)("input",{className:`${t["systemd-service-generator-form__checkbox"]} ${t["systemd-service-generator-form__input"]}`,name:r,onChange:j,type:"checkbox",checked:"on"===e[r]?"checked":""}),d[r]&&(0,o.jsx)("p",{className:t["systemd-service-generator-form__text--error"],children:d[r]})]},r)}))]}),(0,o.jsx)("div",{className:`${t["systemd-service-generator-form__group"]} text--center`,children:(0,o.jsx)("button",{className:`button button--primary button--lg ${t["systemd-service-generator-form__button--primary"]}`,onClick:b,children:"Generate"})})]})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-node.service",children:s})}),(0,o.jsx)("div",{className:"margin-top--lg container",children:(0,o.jsx)(r.A,{language:"ini",title:"subspace-farmer.service",children:c})})]})}},5648:(e,n,s)=>{s.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}}}]); \ No newline at end of file diff --git a/zh/assets/js/56ae784e.6bab72e6.js b/zh/assets/js/56ae784e.a34390af.js similarity index 98% rename from zh/assets/js/56ae784e.6bab72e6.js rename to zh/assets/js/56ae784e.a34390af.js index 020c43b716e..9fb923c0a08 100644 --- a/zh/assets/js/56ae784e.6bab72e6.js +++ b/zh/assets/js/56ae784e.a34390af.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5712],{7367:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var t=n(4848),s=n(8453),a=n(1470),o=n(9365);n(8774),n(5648);const l={title:"\u5e38\u89c1\u95ee\u9898",sidebar_position:4,description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",slug:"/farming/common-problems",keywords:["\u9519\u8bef","Warn","\u8b66\u544a","\u95ee\u9898","\u8bae\u9898"]},i=void 0,c={id:"farming-&-staking/farming/common-problems",title:"\u5e38\u89c1\u95ee\u9898",description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/zh/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"\u5e38\u89c1\u95ee\u9898",sidebar_position:4,description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",slug:"/farming/common-problems",keywords:["\u9519\u8bef","Warn","\u8b66\u544a","\u95ee\u9898","\u8bae\u9898"]},sidebar:"tutorialSidebar",previous:{title:"Taurus \u7f51\u7edc",permalink:"/zh/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/zh/farming/guides"}},u={},d=[{value:"\u7a0b\u5e8f\u95ee\u9898",id:"\u7a0b\u5e8f\u95ee\u9898",level:2},{value:"\u5f02\u5e38\u884c\u4e3a",id:"\u5f02\u5e38\u884c\u4e3a",level:2}];function m(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components},{Details:n}=r;return n||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["\u867d\u7136\u76ee\u6807\u662f\u63d0\u4f9b\u6ca1\u6709\u6f0f\u6d1e\u7684\u8f6f\u4ef6\uff0c\u4f46\u7528\u6237\u53ef\u80fd\u9047\u5230\u67d0\u4e9b\u9519\u8bef\uff0c\u6709\u4e9b\u95ee\u9898\u53ef\u4ee5\u88ab\u5b8c\u5168\u5ffd\u7565\uff0c\u800c\u5176\u4ed6\u95ee\u9898\u5219\u9700\u8981\u6ce8\u610f\u3002\u5982\u679c\u4f60\u4ecd\u7136\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u53c2\u9605\u6211\u4eec\u7684 ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"\u8bba\u575b"})," \u6216\u8bbf\u95ee\u6211\u4eec\u7684 ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," \u670d\u52a1\u5668\u5bfb\u6c42\u5e2e\u52a9\u3002"]}),"\n",(0,t.jsx)(r.h2,{id:"\u7a0b\u5e8f\u95ee\u9898",children:"\u7a0b\u5e8f\u95ee\u9898"}),"\n",(0,t.jsx)(r.p,{children:"\u8fd9\u4e9b\u9519\u8bef\u548c\u8b66\u544a\u4e0e\u5177\u4f53\u7ec4\u4ef6\u7d27\u5bc6\u76f8\u5173\u3002 \u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u7740\u91cd\u6307\u51fa\u5df2\u77e5\u95ee\u9898\uff0c\u63d0\u4f9b\u53ef\u7528\u7684\u8865\u6551\u6b65\u9aa4\u6765\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\uff0c\u5e76\u8bf4\u660e\u5176\u4e25\u91cd\u7a0b\u5ea6\uff1a \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(a.A,{queryString:"component",children:[(0,t.jsxs)(o.A,{value:"node",label:"\u8282\u70b9",default:!0,children:[(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 \u6b64\u9519\u8bef\u4e0e\u9065\u6d4b\u670d\u52a1\u5668\u76f8\u5173\u3002 \u8fd9\u79cd\u60c5\u51b5\u53ef\u80fd\u5076\u5c14\u53d1\u751f\uff0c\u4f46\u5bf9\u8015\u4f5c\u64cd\u4f5c\u6ca1\u6709\u4efb\u4f55\u5f71\u54cd\uff0c\u53ef\u4ee5\u5b89\u5168\u5730\u88ab\u5ffd\u89c6\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u5f53\u4e24\u4e2a\u6216\u591a\u4e2a\u6709\u6548\u7684\u5757\u5728\u76f8\u540c\u533a\u5757\u94fe\u9ad8\u5ea6\u521b\u5efa\u65f6\u4f1a\u51fa\u73b0\u8fd9\u79cd\u60c5\u51b5\u3002\u4e00\u5f00\u59cb\uff0c\u7f51\u7edc\u8282\u70b9\u53ef\u80fd\u4f1a\u5bf9\u54ea\u4e2a\u533a\u5757\u6dfb\u52a0\u5230\u94fe\u4e2d\u4ea7\u751f\u5206\u6b67\uff0c\u5bfc\u81f4\u591a\u4e2a\u4e34\u65f6\u5206\u53c9\u3002 \u4e00\u65e6\u5206\u6b67\u89e3\u51b3\uff0c\u88ab\u4e22\u5f03\u7684\u5206\u53c9\u4e2d\u7684\u533a\u5757\u5c31\u53d8\u6210\u5b64\u5757\uff0c\u94fe\u8fdb\u884c\u91cd\u7ec4\u4ee5\u4fbf\u5c06\u83b7\u80dc\u7684\u5206\u53c9\u4e2d\u7684\u533a\u5757\u5305\u542b\u5230\u94fe\u4e2d\u3002"}),(0,t.jsx)(r.p,{children:"\u8fd9\u4e2a\u95ee\u9898\u5e94\u8be5\u53ef\u4ee5\u81ea\u884c\u89e3\u51b3\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]}),(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u6b64\u8b66\u544a\u6d88\u606f\u4e0d\u4f1a\u5f71\u54cd\u60a8\u7684\u5956\u52b1\u6216\u8282\u70b9\u7684\u64cd\u4f5c\u3002 \u5b83\u53ea\u662f\u4e00\u4e2a\u663e\u793a\u7f51\u7edc\u6b63\u5e38\u8fd0\u884c\u7684\u65e5\u5fd7\u6d88\u606f\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})]}),(0,t.jsx)(o.A,{value:"\u519c\u6c11",label:"\u519c\u592b",children:(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 \u8fd9\u8868\u793a\u7f13\u5b58\u4e2d\u6ca1\u6709\u8db3\u591f\u7684\u7a7a\u95f4\u6765\u5b58\u50a8\u65b0\u7684\u6570\u636e\u3002"}),(0,t.jsx)(r.p,{children:"\u4f60\u50a8\u5b58\u6570\u636e\u5757\u7684\u9a71\u52a8\u5668\u7a7a\u95f4\u4e0d\u8db3\u3002\u51cf\u5c0f\u5730\u5757\u5927\u5c0f\u5e76\u91cd\u542f\u519c\u6c11\u7a0b\u5e8f\u3002 \u6b64\u5916\uff0c\u8bf7\u786e\u4fdd\u6570\u636e\u5757\u4fdd\u5b58\u5230\u6b63\u786e\u7684\u9a71\u52a8\u5668\uff0c\u5e76\u4e14\u9a71\u52a8\u5668\u5df2\u6b63\u786e\u6302\u8f7d\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})}),(0,t.jsx)(o.A,{value:"farming-cluster",label:"\u8015\u79cd\u96c6\u7fa4",children:(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u8fd9\u662f\u4e00\u4e2a\u6b63\u5728\u8c03\u67e5\u7684\u5df2\u77e5\u95ee\u9898\uff0c\u4e3a\u7f13\u89e3\u8fd9\u4e2a\u9519\u8bef\u5e26\u6765\u7684\u5f71\u54cd\uff0c\u8bf7\u5728\u60a8\u7684\u63a7\u5236\u5668\u3001Cache\u548cPlotter\u7ec4\u4ef6\u76f8\u540c\u7684\u673a\u5668\u4e0a\u8fd0\u884c\u60a8\u7684 NATS \u7ec4\u4ef6\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-06"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"\u5f02\u5e38\u884c\u4e3a",children:"\u5f02\u5e38\u884c\u4e3a"}),"\n",(0,t.jsx)(r.p,{children:"\u8fd9\u4e9b\u5f02\u5e38\u884c\u4e3a\u4e0e\u5177\u4f53\u7ec4\u4ef6\u65e0\u5173\u3002 \u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u6982\u8ff0\u5e38\u89c1\u95ee\u9898\uff0c\u5e76\u63d0\u4f9b\u4efb\u4f55\u53ef\u7528\u7684\u8865\u6551\u63aa\u65bd\u6765\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\u3002"}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["\u5982\u679c\u60a8\u5728Windows\u4e2d\u9047\u5230\u8282\u70b9\u4e0d\u4ea7\u751f\u8f93\u51fa\u4e14\u4e0d\u663e\u793a\u4efb\u4f55\u9519\u8bef\u4ee3\u7801\u7684\u60c5\u51b5 \u5f88\u53ef\u80fd\u60a8\u9700\u8981\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684 ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"\u3002"]})]}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"\u519c\u6c11\u5728\u7ed8\u5236\u5730\u56fe\u65f6\u5361\u4f4f\uff0c\u51e0\u4e2a\u5c0f\u65f6\u90fd\u6ca1\u6709\u4efb\u4f55\u8fdb\u5c55\u3002"})}),(0,t.jsx)(r.p,{children:"\u5c1d\u8bd5\u91cd\u542f\u60a8\u7684\u8282\u70b9\u6216\u519c\u6c11\u7a0b\u5e8f\u3002 \u6211\u4eec\u89c2\u5bdf\u5230\u5728\u521b\u5efa\u8f83\u5927\u7684\u5730\u5757\u65f6\uff0c\u8fdb\u7a0b\u6709\u65f6\u4f3c\u4e4e\u5361\u4f4f\uff0c\u4f46\u901a\u5e38\u662f\u5728\u4e00\u6bb5\u65f6\u95f4\u540e\u81ea\u52a8\u6062\u590d\u3002"})]}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"\u8015\u79cd\u6570\u65e5\u540e\u4ecd\u672a\u83b7\u5f97\u5956\u52b1"})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["\u786e\u4fdd\u60a8\u4f7f\u7528\u6700\u65b0\u7248\u672c\u7684 ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"}),"\u6216 ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["\u901a\u8fc7\u68c0\u67e5",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," \u670d\u52a1\u5668\uff0c\u786e\u8ba4\u4f60\u7684\u519c\u573a\u662f\u6b63\u5e38\u8fd0\u884c\u7684\u5e76\u4e14\u5df2\u540c\u6b65\u5230\u6700\u65b0\u7684\u533a\u5757\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},9365:(e,r,n)=>{n.d(r,{A:()=>o});n(6540);var t=n(8215);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:r,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,o),hidden:n,children:r})}},1470:(e,r,n)=>{n.d(r,{A:()=>k});var t=n(6540),s=n(8215),a=n(3104),o=n(6347),l=n(205),i=n(7485),c=n(1682),u=n(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:r,children:n}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:n,attributes:t,default:s}}=e;return{value:r,label:n,attributes:t,default:s}}))}(n);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,n])}function h(e){let{value:r,tabValues:n}=e;return n.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:r=!1,groupId:n}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:r,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)((e=>{if(!a)return;const r=new URLSearchParams(s.location.search);r.set(a,e),s.replace({...s.location,search:r.toString()})}),[a,s])]}function f(e){const{defaultValue:r,queryString:n=!1,groupId:s}=e,a=m(e),[o,i]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!h({value:r,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=n.find((e=>e.default))??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:r}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(r),[s,a]=(0,u.Dv)(n);return[s,(0,t.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),x=(()=>{const e=c??f;return h({value:e,tabValues:a})?e:null})();(0,l.A)((()=>{x&&i(x)}),[x]);return{selectedValue:o,selectValue:(0,t.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function g(e){let{className:r,block:n,selectedValue:t,selectValue:o,tabValues:l}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const r=e.currentTarget,n=i.indexOf(r),s=l[n].value;s!==t&&(c(r),o(s))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=i.indexOf(e.currentTarget)+1;r=i[n]??i[0];break}case"ArrowLeft":{const n=i.indexOf(e.currentTarget)-1;r=i[n]??i[i.length-1];break}}r?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},r),children:l.map((e=>{let{value:r,label:n,attributes:a}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":t===r}),children:n??r},r)}))})}function v(e){let{lazy:r,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(r){const e=o.find((e=>e.props.value===a));return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:o.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==a})))})}function y(e){const r=f(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,j.jsx)(g,{...r,...e}),(0,j.jsx)(v,{...r,...e})]})}function k(e){const r=(0,b.A)();return(0,j.jsx)(y,{...e,children:d(e.children)},String(r))}},5648:(e,r,n)=>{n.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>l});var t=n(6540);const s={},a=t.createContext(s);function o(e){const r=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5712],{7367:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var t=n(4848),s=n(8453),a=n(1470),o=n(9365);n(8774),n(5648);const l={title:"\u5e38\u89c1\u95ee\u9898",sidebar_position:4,description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",slug:"/farming/common-problems",keywords:["\u9519\u8bef","Warn","\u8b66\u544a","\u95ee\u9898","\u8bae\u9898"]},i=void 0,c={id:"farming-&-staking/farming/common-problems",title:"\u5e38\u89c1\u95ee\u9898",description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/common-problems.mdx",sourceDirName:"farming-&-staking/farming",slug:"/farming/common-problems",permalink:"/zh/farming/common-problems",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/common-problems.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"\u5e38\u89c1\u95ee\u9898",sidebar_position:4,description:"\u672c\u9875\u89e3\u51b3\u7528\u6237\u5728\u4f7f\u7528 Autonomys\u8f6f\u4ef6\u65f6\u53ef\u80fd\u9047\u5230\u7684\u5e38\u89c1\u95ee\u9898\u3002 \u63d0\u4f9b\u4e86\u5177\u4f53\u9519\u8bef\u3001\u4e25\u91cd\u7a0b\u5ea6\u4ee5\u53ca\u5efa\u8bae\u8865\u6551\u6b65\u9aa4\u7684\u8be6\u7ec6\u60c5\u51b5\uff0c\u5e2e\u52a9\u7528\u6237\u6709\u6548\u5730\u89e3\u51b3\u6545\u969c\u3002",slug:"/farming/common-problems",keywords:["\u9519\u8bef","Warn","\u8b66\u544a","\u95ee\u9898","\u8bae\u9898"]},sidebar:"tutorialSidebar",previous:{title:"Taurus \u7f51\u7edc",permalink:"/zh/farming/advanced-cli/taurus"},next:{title:"Additional Guides",permalink:"/zh/farming/guides"}},u={},d=[{value:"\u7a0b\u5e8f\u95ee\u9898",id:"\u7a0b\u5e8f\u95ee\u9898",level:2},{value:"\u5f02\u5e38\u884c\u4e3a",id:"\u5f02\u5e38\u884c\u4e3a",level:2}];function m(e){const r={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components},{Details:n}=r;return n||function(e,r){throw new Error("Expected "+(r?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.p,{children:["\u867d\u7136\u76ee\u6807\u662f\u63d0\u4f9b\u6ca1\u6709\u6f0f\u6d1e\u7684\u8f6f\u4ef6\uff0c\u4f46\u7528\u6237\u53ef\u80fd\u9047\u5230\u67d0\u4e9b\u9519\u8bef\uff0c\u6709\u4e9b\u95ee\u9898\u53ef\u4ee5\u88ab\u5b8c\u5168\u5ffd\u7565\uff0c\u800c\u5176\u4ed6\u95ee\u9898\u5219\u9700\u8981\u6ce8\u610f\u3002\u5982\u679c\u4f60\u4ecd\u7136\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u53c2\u9605\u6211\u4eec\u7684 ",(0,t.jsx)(r.a,{href:"https://forum.autonomys.xyz/search?expanded=false&q=tags",children:"\u8bba\u575b"})," \u6216\u8bbf\u95ee\u6211\u4eec\u7684 ",(0,t.jsx)(r.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"Discord"})," \u670d\u52a1\u5668\u5bfb\u6c42\u5e2e\u52a9\u3002"]}),"\n",(0,t.jsx)(r.h2,{id:"\u7a0b\u5e8f\u95ee\u9898",children:"\u7a0b\u5e8f\u95ee\u9898"}),"\n",(0,t.jsx)(r.p,{children:"\u8fd9\u4e9b\u9519\u8bef\u548c\u8b66\u544a\u4e0e\u5177\u4f53\u7ec4\u4ef6\u7d27\u5bc6\u76f8\u5173\u3002 \u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u7740\u91cd\u6307\u51fa\u5df2\u77e5\u95ee\u9898\uff0c\u63d0\u4f9b\u53ef\u7528\u7684\u8865\u6551\u6b65\u9aa4\u6765\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\uff0c\u5e76\u8bf4\u660e\u5176\u4e25\u91cd\u7a0b\u5ea6\uff1a \ud83d\udfe2 \ud83d\udfe0 \ud83d\udd34"}),"\n",(0,t.jsxs)(a.A,{queryString:"component",children:[(0,t.jsxs)(o.A,{value:"node",label:"\u8282\u70b9",default:!0,children:[(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: telemetry: \u274c Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe2 \u6b64\u9519\u8bef\u4e0e\u9065\u6d4b\u670d\u52a1\u5668\u76f8\u5173\u3002 \u8fd9\u79cd\u60c5\u51b5\u53ef\u80fd\u5076\u5c14\u53d1\u751f\uff0c\u4f46\u5bf9\u8015\u4f5c\u64cd\u4f5c\u6ca1\u6709\u4efb\u4f55\u5f71\u54cd\uff0c\u53ef\u4ee5\u5b89\u5168\u5730\u88ab\u5ffd\u89c6\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u5f53\u4e24\u4e2a\u6216\u591a\u4e2a\u6709\u6548\u7684\u5757\u5728\u76f8\u540c\u533a\u5757\u94fe\u9ad8\u5ea6\u521b\u5efa\u65f6\u4f1a\u51fa\u73b0\u8fd9\u79cd\u60c5\u51b5\u3002\u4e00\u5f00\u59cb\uff0c\u7f51\u7edc\u8282\u70b9\u53ef\u80fd\u4f1a\u5bf9\u54ea\u4e2a\u533a\u5757\u6dfb\u52a0\u5230\u94fe\u4e2d\u4ea7\u751f\u5206\u6b67\uff0c\u5bfc\u81f4\u591a\u4e2a\u4e34\u65f6\u5206\u53c9\u3002 \u4e00\u65e6\u5206\u6b67\u89e3\u51b3\uff0c\u88ab\u4e22\u5f03\u7684\u5206\u53c9\u4e2d\u7684\u533a\u5757\u5c31\u53d8\u6210\u5b64\u5757\uff0c\u94fe\u8fdb\u884c\u91cd\u7ec4\u4ee5\u4fbf\u5c06\u83b7\u80dc\u7684\u5206\u53c9\u4e2d\u7684\u533a\u5757\u5305\u542b\u5230\u94fe\u4e2d\u3002"}),(0,t.jsx)(r.p,{children:"\u8fd9\u4e2a\u95ee\u9898\u5e94\u8be5\u53ef\u4ee5\u81ea\u884c\u89e3\u51b3\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]}),(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot= to_next_slot="})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u6b64\u8b66\u544a\u6d88\u606f\u4e0d\u4f1a\u5f71\u54cd\u60a8\u7684\u5956\u52b1\u6216\u8282\u70b9\u7684\u64cd\u4f5c\u3002 \u5b83\u53ea\u662f\u4e00\u4e2a\u663e\u793a\u7f51\u7edc\u6b63\u5e38\u8fd0\u884c\u7684\u65e5\u5fd7\u6d88\u606f\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})]}),(0,t.jsx)(o.A,{value:"\u519c\u6c11",label:"\u519c\u592b",children:(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index="})}),(0,t.jsx)(r.p,{children:"\ud83d\udd34 \u8fd9\u8868\u793a\u7f13\u5b58\u4e2d\u6ca1\u6709\u8db3\u591f\u7684\u7a7a\u95f4\u6765\u5b58\u50a8\u65b0\u7684\u6570\u636e\u3002"}),(0,t.jsx)(r.p,{children:"\u4f60\u50a8\u5b58\u6570\u636e\u5757\u7684\u9a71\u52a8\u5668\u7a7a\u95f4\u4e0d\u8db3\u3002\u51cf\u5c0f\u5730\u5757\u5927\u5c0f\u5e76\u91cd\u542f\u519c\u6c11\u7a0b\u5e8f\u3002 \u6b64\u5916\uff0c\u8bf7\u786e\u4fdd\u6570\u636e\u5757\u4fdd\u5b58\u5230\u6b63\u786e\u7684\u9a71\u52a8\u5668\uff0c\u5e76\u4e14\u9a71\u52a8\u5668\u5df2\u6b63\u786e\u6302\u8f7d\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})}),(0,t.jsx)(o.A,{value:"farming-cluster",label:"\u8015\u79cd\u96c6\u7fa4",children:(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"WARN {farm_index=3}:{sector_index=1036}: subspace_farmer::single_disk_farm::plotting: Failed to plot sector, retrying in 1s error=Low-level plotting error: Received only sector bytes out of expected bytes"})}),(0,t.jsx)(r.p,{children:"\ud83d\udfe0 \u8fd9\u662f\u4e00\u4e2a\u6b63\u5728\u8c03\u67e5\u7684\u5df2\u77e5\u95ee\u9898\uff0c\u4e3a\u7f13\u89e3\u8fd9\u4e2a\u9519\u8bef\u5e26\u6765\u7684\u5f71\u54cd\uff0c\u8bf7\u5728\u60a8\u7684\u63a7\u5236\u5668\u3001Cache\u548cPlotter\u7ec4\u4ef6\u76f8\u540c\u7684\u673a\u5668\u4e0a\u8fd0\u884c\u60a8\u7684 NATS \u7ec4\u4ef6\u3002"}),(0,t.jsx)("small",{children:"Last Confirmed: mainnet-2024-nov-13"})]})})]}),"\n",(0,t.jsx)(r.h2,{id:"\u5f02\u5e38\u884c\u4e3a",children:"\u5f02\u5e38\u884c\u4e3a"}),"\n",(0,t.jsx)(r.p,{children:"\u8fd9\u4e9b\u5f02\u5e38\u884c\u4e3a\u4e0e\u5177\u4f53\u7ec4\u4ef6\u65e0\u5173\u3002 \u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u6982\u8ff0\u5e38\u89c1\u95ee\u9898\uff0c\u5e76\u63d0\u4f9b\u4efb\u4f55\u53ef\u7528\u7684\u8865\u6551\u63aa\u65bd\u6765\u89e3\u51b3\u8fd9\u4e9b\u95ee\u9898\u3002"}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"No Output and Missing Error Codes"})}),(0,t.jsxs)(r.p,{children:["\u5982\u679c\u60a8\u5728Windows\u4e2d\u9047\u5230\u8282\u70b9\u4e0d\u4ea7\u751f\u8f93\u51fa\u4e14\u4e0d\u663e\u793a\u4efb\u4f55\u9519\u8bef\u4ee3\u7801\u7684\u60c5\u51b5 \u5f88\u53ef\u80fd\u60a8\u9700\u8981\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684 ",(0,t.jsx)(r.a,{href:"https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist",children:"Visual C++ Redistributable package"}),"\u3002"]})]}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"\u519c\u6c11\u5728\u7ed8\u5236\u5730\u56fe\u65f6\u5361\u4f4f\uff0c\u51e0\u4e2a\u5c0f\u65f6\u90fd\u6ca1\u6709\u4efb\u4f55\u8fdb\u5c55\u3002"})}),(0,t.jsx)(r.p,{children:"\u5c1d\u8bd5\u91cd\u542f\u60a8\u7684\u8282\u70b9\u6216\u519c\u6c11\u7a0b\u5e8f\u3002 \u6211\u4eec\u89c2\u5bdf\u5230\u5728\u521b\u5efa\u8f83\u5927\u7684\u5730\u5757\u65f6\uff0c\u8fdb\u7a0b\u6709\u65f6\u4f3c\u4e4e\u5361\u4f4f\uff0c\u4f46\u901a\u5e38\u662f\u5728\u4e00\u6bb5\u65f6\u95f4\u540e\u81ea\u52a8\u6062\u590d\u3002"})]}),"\n",(0,t.jsxs)(n,{children:[(0,t.jsx)("summary",{children:(0,t.jsx)("small",{children:"\u8015\u79cd\u6570\u65e5\u540e\u4ecd\u672a\u83b7\u5f97\u5956\u52b1"})}),(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["\u786e\u4fdd\u60a8\u4f7f\u7528\u6700\u65b0\u7248\u672c\u7684 ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"}),"\u6216 ",(0,t.jsx)(r.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"}),"\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["\u901a\u8fc7\u68c0\u67e5",(0,t.jsx)(r.a,{href:"https://telemetry.subspace.foundation",children:"telemetry"})," \u670d\u52a1\u5668\uff0c\u786e\u8ba4\u4f60\u7684\u519c\u573a\u662f\u6b63\u5e38\u8fd0\u884c\u7684\u5e76\u4e14\u5df2\u540c\u6b65\u5230\u6700\u65b0\u7684\u533a\u5757\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["Check your balance using ",(0,t.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"})," or the ",(0,t.jsx)(r.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.mainnet.subspace.foundation%2Fws#/explorer",children:"Polkadot Explorer"})]}),"\n"]})]})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(m,{...e})}):m(e)}},9365:(e,r,n)=>{n.d(r,{A:()=>o});n(6540);var t=n(8215);const s={tabItem:"tabItem_Ymn6"};var a=n(4848);function o(e){let{children:r,hidden:n,className:o}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,t.A)(s.tabItem,o),hidden:n,children:r})}},1470:(e,r,n)=>{n.d(r,{A:()=>k});var t=n(6540),s=n(8215),a=n(3104),o=n(6347),l=n(205),i=n(7485),c=n(1682),u=n(679);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function m(e){const{values:r,children:n}=e;return(0,t.useMemo)((()=>{const e=r??function(e){return d(e).map((e=>{let{props:{value:r,label:n,attributes:t,default:s}}=e;return{value:r,label:n,attributes:t,default:s}}))}(n);return function(e){const r=(0,c.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[r,n])}function h(e){let{value:r,tabValues:n}=e;return n.some((e=>e.value===r))}function p(e){let{queryString:r=!1,groupId:n}=e;const s=(0,o.W6)(),a=function(e){let{queryString:r=!1,groupId:n}=e;if("string"==typeof r)return r;if(!1===r)return null;if(!0===r&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:r,groupId:n});return[(0,i.aZ)(a),(0,t.useCallback)((e=>{if(!a)return;const r=new URLSearchParams(s.location.search);r.set(a,e),s.replace({...s.location,search:r.toString()})}),[a,s])]}function f(e){const{defaultValue:r,queryString:n=!1,groupId:s}=e,a=m(e),[o,i]=(0,t.useState)((()=>function(e){let{defaultValue:r,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(r){if(!h({value:r,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${r}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return r}const t=n.find((e=>e.default))??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:a}))),[c,d]=p({queryString:n,groupId:s}),[f,b]=function(e){let{groupId:r}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(r),[s,a]=(0,u.Dv)(n);return[s,(0,t.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:s}),x=(()=>{const e=c??f;return h({value:e,tabValues:a})?e:null})();(0,l.A)((()=>{x&&i(x)}),[x]);return{selectedValue:o,selectValue:(0,t.useCallback)((e=>{if(!h({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=n(2303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function g(e){let{className:r,block:n,selectedValue:t,selectValue:o,tabValues:l}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,a.a_)(),u=e=>{const r=e.currentTarget,n=i.indexOf(r),s=l[n].value;s!==t&&(c(r),o(s))},d=e=>{let r=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const n=i.indexOf(e.currentTarget)+1;r=i[n]??i[0];break}case"ArrowLeft":{const n=i.indexOf(e.currentTarget)-1;r=i[n]??i[i.length-1];break}}r?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},r),children:l.map((e=>{let{value:r,label:n,attributes:a}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:t===r?0:-1,"aria-selected":t===r,ref:e=>i.push(e),onKeyDown:d,onClick:u,...a,className:(0,s.A)("tabs__item",x.tabItem,a?.className,{"tabs__item--active":t===r}),children:n??r},r)}))})}function v(e){let{lazy:r,children:n,selectedValue:a}=e;const o=(Array.isArray(n)?n:[n]).filter(Boolean);if(r){const e=o.find((e=>e.props.value===a));return e?(0,t.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:o.map(((e,r)=>(0,t.cloneElement)(e,{key:r,hidden:e.props.value!==a})))})}function y(e){const r=f(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",x.tabList),children:[(0,j.jsx)(g,{...r,...e}),(0,j.jsx)(v,{...r,...e})]})}function k(e){const r=(0,b.A)();return(0,j.jsx)(y,{...e,children:d(e.children)},String(r))}},5648:(e,r,n)=>{n.d(r,{A:()=>t});const t={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},8453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>l});var t=n(6540);const s={},a=t.createContext(s);function o(e){const r=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(a.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/zh/assets/js/f1e7ca13.ec796d04.js b/zh/assets/js/f1e7ca13.193296a3.js similarity index 98% rename from zh/assets/js/f1e7ca13.ec796d04.js rename to zh/assets/js/f1e7ca13.193296a3.js index f8dd499b5aa..37c092c28db 100644 --- a/zh/assets/js/f1e7ca13.ec796d04.js +++ b/zh/assets/js/f1e7ca13.193296a3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7048],{1262:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-windows-x86_64-v2-mainnet-2024-nov-06.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-macos-aarch64-mainnet-2024-nov-06.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/zh/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"\u5165\u95e8\u6307\u5357",permalink:"/zh/staking/intro"},next:{title:"Deregister an Operator",permalink:"/zh/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,d.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=c??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,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"},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7048],{1262:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(4848),o=t(8453),r=t(1470),s=t(9365),i=t(1432),l=t(8774),c=t(5648);function d(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-skylake-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-windows-x86_64-v2-mainnet-2024-nov-13.exe",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}function h(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-advanced-cli-executables",children:"Download Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-macos-aarch64-mainnet-2024-nov-13.zip",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Apple CPU)"})]})})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}function g(e){const n={h3:"h3",hr:"hr",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"download-the-advanced-cli-executables",children:"Download the Advanced CLI Executables"}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Skylake+ CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Legacy CPU)"})]})}),"\n",(0,a.jsx)("div",{className:`${c.A.buttons} ${c.A.flexContainer}`,children:(0,a.jsxs)(l.A,{className:"button button--secondary",to:"https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",padding:"10px"},children:[(0,a.jsx)("span",{style:{fontSize:"20px"},children:"Node Executable"}),(0,a.jsx)("span",{style:{fontSize:"14px"},children:"(Aarch64/Raspberry Pi)"})]})})]})}function x(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(g,{...e})}):g(e)}const m={title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},b=void 0,f={id:"farming-&-staking/staking/operators/register-operator",title:"Register an Operator",description:"Operators Setup guide",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",sourceDirName:"farming-&-staking/staking/operators",slug:"/staking/operator/register",permalink:"/zh/staking/operator/register",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/staking/operators/register-operator.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Register an Operator",sidebar_position:1,description:"Operators Setup guide",slug:"/staking/operator/register",keywords:["Operator","Guide"]},sidebar:"tutorialSidebar",previous:{title:"\u5165\u95e8\u6307\u5357",permalink:"/zh/staking/intro"},next:{title:"Deregister an Operator",permalink:"/zh/staking/operator/deregister"}},y={},j=[{value:"Download Subspace Node",id:"download-subspace-node",level:2},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Download Advanced CLI Executables",id:"download-advanced-cli-executables",level:3},{value:"Download the Advanced CLI Executables",id:"download-the-advanced-cli-executables",level:3},{value:"Choosing the right domain",id:"choosing-the-right-domain",level:3},{value:"Create operator key",id:"create-operator-key",level:3},{value:"Start the domain operator node",id:"start-the-domain-operator-node",level:3},{value:"Register an operator on domain",id:"register-an-operator-on-domain",level:3},{value:"Register an operator using Autonomys Staking interface",id:"register-an-operator-using-autonomys-staking-interface",level:4}];function w(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h2,{id:"download-subspace-node",children:"Download Subspace Node"}),"\n",(0,a.jsxs)(n.p,{children:["Download ",(0,a.jsx)(n.code,{children:"Subspace Node"})," for your respective operating system."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"For running the Operator Node on Linux, proceed directly to the next step."})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(u,{})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4emacOS",default:!0,children:(0,a.jsx)(p,{})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27Ubuntu",children:(0,a.jsx)(x,{})})]}),"\n",(0,a.jsx)(n.h3,{id:"choosing-the-right-domain",children:"Choosing the right domain"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID).\nIt is possible to register an operator for each domain, but each operator will require running a node."}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Any account with the ",(0,a.jsx)(n.strong,{children:"minimum operator stake"})," can become an operator."]})}),"\n",(0,a.jsx)(n.h3,{id:"create-operator-key",children:"Create operator key"}),"\n",(0,a.jsx)(n.p,{children:"An operator needs a key pair to participate in bundle production."}),"\n",(0,a.jsxs)(n.p,{children:["To create a new operator key, run the following command:\n",(0,a.jsx)(n.code,{children:"subspace-node domain key create --base-path NODE_DATA_PATH --domain-id DOMAIN"})]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to specify the base ",(0,a.jsx)(n.strong,{children:"--base-path"})," for the key generation, and running an operator node and make sure to replace the value in ",(0,a.jsx)(n.strong,{children:"--domain-id"})," with the domain ID you would like to be an operator on."]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsx)(n.p,{children:"The operator is responsible for finding out the correct domain ID they want to operate on."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"You have successfully generated an operator key, congratulations!"})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"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."})}),"\n",(0,a.jsxs)(n.p,{children:["The keys were generated in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"}),". If you don't see the generated keypair in the subfolder, something went wrong."]}),"\n",(0,a.jsx)(n.h3,{id:"start-the-domain-operator-node",children:"Start the domain operator node"}),"\n",(0,a.jsx)(n.p,{children:"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:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"subspace-node [consensus-chain-args] -- [domain-args]\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Example:\nStart a node as operator on ",(0,a.jsx)(n.code,{children:"taurus"})," chain:"]}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsx)(n.p,{children:"Currently, the domain chain does not support syncing from other operator nodes; it needs to be deterministically derived from the consensus chain block by block."})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["You need to ",(0,a.jsx)(n.strong,{children:"wipe"})," and sync your node from genesis block without using snap sync, since you need to sync both consensus and domain chains.\nYou do not need to wipe any existing plots."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["Ensure you replace ",(0,a.jsx)(n.code,{children:"your_domain_id"})," with your domain identifier in the command and ",(0,a.jsx)(n.code,{children:"your_operator_id"})," with your operator_id."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can ignore setting up ",(0,a.jsx)(n.code,{children:"your_operator_id"})," while you're syncing your node as you won't have an operator id until you have registered your operator. Make sure to set it after syncing and registration."]})}),"\n",(0,a.jsx)(n.admonition,{type:"note",children:(0,a.jsxs)(n.p,{children:["While it is possible to use ",(0,a.jsx)(n.code,{children:"archive"})," for ",(0,a.jsx)(n.code,{children:"blocks-pruning"})," and ",(0,a.jsx)(n.code,{children:"state-pruning"}),", it is recommended to use ",(0,a.jsx)(n.code,{children:"archive-canonical"}),". Using ",(0,a.jsx)(n.code,{children:"archive"})," will keep the state of all blocks and will use additional disk space."]})}),"\n",(0,a.jsxs)(r.A,{groupId:"OS",children:[(0,a.jsx)(s.A,{value:"windows",label:"\ud83d\uddbc\ufe0f Windows",default:!0,children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run `\n --chain taurus `\n --name your_node_name `\n --base-path NODE_DATA_PATH `\n --blocks-pruning archive-canonical `\n --state-pruning archive-canonical `\n --sync full `\n -- `\n --domain-id your_domain_id `\n --operator-id your_operator_id `\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"macos",label:"\ud83c\udf4e macOS",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",children:(0,a.jsx)(i.A,{children:"target/production/subspace-node run \\\n --chain taurus \\\n --name your_node_name \\\n --base-path NODE_DATA_PATH \\\n --blocks-pruning archive-canonical \\\n --state-pruning archive-canonical \\\n --sync full \\\n -- \\\n --domain-id your_domain_id \\\n --operator-id your_operator_id \\\n --listen-on /ip4/0.0.0.0/tcp/40333"})}),(0,a.jsx)(s.A,{value:"docker",label:"\ud83d\udc0b Docker",children:(0,a.jsx)(i.A,{children:'services:\n node:\n # Replace snapshot-DATE with the latest release (like snapshot-2024-jun-18)\n image: ghcr.io/autonomys/node:snapshot-DATE\n volumes:\n # Instead of specifying volume (which will store data in /var/lib/docker), you can\n # alternatively specify path to the directory where files will be stored, just make\n # sure everyone is allowed to write there\n - node-data:/var/subspace:rw\n # - /path/to/subspace-node:/var/subspace:rw\n ports:\n # If port 30333 or 30433 is already occupied by another Substrate-based node, replace all\n # occurrences of 30333 or 30433 in this file with another value\n - "0.0.0.0:30333:30333/tcp"\n - "0.0.0.0:30433:30433/tcp"\n - "0.0.0.0:40333:40333/tcp"\n restart: unless-stopped\n command: [\n "run",\n "--chain", "taurus",\n "--base-path", "/var/subspace",\n "--listen-on", "0.0.0.0:30333",\n "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433",\n # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry)\n "--name", "INSERT_YOUR_ID",\n "--blocks-pruning", "archive-canonical",\n "--state-pruning", "archive-canonical", \n "--sync", "full", \n "--",\n # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on\n "--domain-id", "INSERT_YOUR_DOMAIN_ID",\n # Replace INSERT_YOUR_OPERATOR_ID with your operator ID\n "--operator-id", "INSERT_YOUR_OPERATOR_ID",\n "--listen-on", "/ip4/0.0.0.0/tcp/40333"\n ]\n healthcheck:\n timeout: 5s\n # If node setup takes longer than expected, you want to increase interval and retries number.\n interval: 30s\n retries: 60\n volumes:\n node-data:\n '})})]}),"\n",(0,a.jsxs)(n.admonition,{type:"note",children:[(0,a.jsxs)(n.p,{children:["If you're running an operator node for ",(0,a.jsx)(n.strong,{children:"AutoID domain"}),", add the following bootstrap node to the list of domain arguments:"]}),(0,a.jsx)(n.p,{children:"--bootstrap-node /dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9"})]}),"\n",(0,a.jsx)(n.p,{children:"You should see the node start successfully and begin syncing."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Staking-13",src:t(9377).A+"",width:"1304",height:"730"})}),"\n",(0,a.jsx)(n.h3,{id:"register-an-operator-on-domain",children:"Register an operator on domain"}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It's crucial to fully sync your node before registering as an operator. Please follow the commands in the ",(0,a.jsx)(n.em,{children:(0,a.jsx)(n.strong,{children:"Start the domain operator"})})," node section and only register as an operator once your node is fully synced. If many operators are registered but their nodes are still syncing or offline, it can adversely affect the speed of block production in the domain.\nYou are required to have at least 100 tSSC in order to register your operator. If you are a verified farmer but do not have enough tSSC, you can visit the ",(0,a.jsx)(n.a,{href:"/staking/operator/tips",children:"Operator Tips & Tricks"})," page to find out how to claim 100 tSSC."]})}),"\n",(0,a.jsx)(n.h4,{id:"register-an-operator-using-autonomys-staking-interface",children:"Register an operator using Autonomys Staking interface"}),"\n",(0,a.jsxs)(n.ol,{children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the staking tab on ",(0,a.jsx)(n.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," and connect your wallet."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-1",src:t(6390).A+"",width:"1697",height:"1070"})}),"\n",(0,a.jsxs)(n.ol,{start:"2",children:["\n",(0,a.jsxs)(n.li,{children:["Select the wallet you would like to connect. Both ",(0,a.jsx)(n.strong,{children:"Subwallet"})," and ",(0,a.jsx)(n.strong,{children:"PolkadotJS"})," wallets are supported."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-2",src:t(3949).A+"",width:"372",height:"220"})}),"\n",(0,a.jsxs)(n.ol,{start:"3",children:["\n",(0,a.jsx)(n.li,{children:"Enter your password to give an access to your wallet."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-3",src:t(6468).A+"",width:"390",height:"633"})}),"\n",(0,a.jsxs)(n.ol,{start:"4",children:["\n",(0,a.jsx)(n.li,{children:"Select the account you'd like to use form the dropdown menu. You can click the button in the upper left corner to see available and locked (staked) token balances for the selected account."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-4",src:t(2731).A+"",width:"280",height:"108"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-5",src:t(2226).A+"",width:"546",height:"636"})}),"\n",(0,a.jsxs)(n.ol,{start:"5",children:["\n",(0,a.jsxs)(n.li,{children:["Proceed to the ",(0,a.jsx)(n.code,{children:"Register Operator"})," tab."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-6",src:t(8809).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"6",children:["\n",(0,a.jsxs)(n.li,{children:["Select the ",(0,a.jsx)(n.code,{children:"domainId"})," you would like to be registered on. For Stake Wars, Nova is Domain 0 and Auto-ID should be Domain 1 once it is available."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-7",src:t(2560).A+"",width:"1641",height:"1107"})}),"\n",(0,a.jsxs)(n.ol,{start:"7",children:["\n",(0,a.jsxs)(n.li,{children:["An important security change from Stake Wars one is that you are now required to have a Proof of signing key ownership signature. This is derived from your seed phrase when creating the operator key.",(0,a.jsx)(n.br,{}),"\n","You can either select the file that contains your seed in the subfolder of ",(0,a.jsx)(n.strong,{children:"NODE_DATA_PATH"})," under ",(0,a.jsx)(n.code,{children:"/domains/domainID/keystore"})," and then click the choose file and point to that file or you can choose the Proof with seed and manually enter the seed phrase.\nOnce you click the Generate proof button it will automatically populate the ",(0,a.jsx)(n.code,{children:"Signing key"})," and ",(0,a.jsx)(n.code,{children:"Proof of signing key ownership signature"})," fields. Enter the ",(0,a.jsx)(n.code,{children:"Amount to Stake"}),", ",(0,a.jsx)(n.code,{children:"Nominator Tax"}),", ",(0,a.jsx)(n.code,{children:"Minimum Nominator Stake"})," and then click ",(0,a.jsx)(n.code,{children:"Next"}),"."]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsx)(n.p,{children:"Make sure to specify a Minimum Nominator Stake of at least 1 tSSC."})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-8",src:t(8919).A+"",width:"1618",height:"1040"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["Make sure to either locate the signing key file generated on the previous ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"#create-operator-key",children:"Create operator key"})})," step or use the key phrase that was displayed when the key was created and is also in that key file."]})}),"\n",(0,a.jsxs)(n.ol,{start:"8",children:["\n",(0,a.jsx)(n.li,{children:"Approve the request in the pop-up window."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-9",src:t(5774).A+"",width:"395",height:"620"})}),"\n",(0,a.jsxs)(n.ol,{start:"9",children:["\n",(0,a.jsxs)(n.li,{children:["Congratulations, you're now registered as an ",(0,a.jsx)(n.strong,{children:"operator"}),"! You can click on the Manage My Operator tab to see your operator and get the Operator Id."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"NStaking-10",src:t(1604).A+"",width:"1715",height:"516"})}),"\n",(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["It can take up to 10 minutes for the operator to be registered and appear on the page. It may take a day before your Stake amount is displayed under Total Stake in the table. Once you have your Operator Id you can restart your operator node and include the ",(0,a.jsx)(n.code,{children:"--operator-id **OPERATOR_ID**"})," as a parameter."]})}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["You can view some additional actions by clicking on ",(0,a.jsx)(n.code,{children:"action"})," next to your operator.\nYou can increase your stake (Nominate), withdraw some stake and de-register your operator from there."]})})]})}function v(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(w,{...e})}):w(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var a=t(8215);const o={tabItem:"tabItem_Ymn6"};var r=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.A)(o.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(6540),o=t(8215),r=t(3104),s=t(6347),i=t(205),l=t(7485),c=t(1682),d=t(679);function u(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return u(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:o}}=e;return{value:n,label:t,attributes:a,default:o}}))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const o=(0,s.W6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(o.location.search);n.set(r,e),o.replace({...o.location,search:n.toString()})}),[r,o])]}function x(e){const{defaultValue:n,queryString:t=!1,groupId:o}=e,r=h(e),[s,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,u]=g({queryString:t,groupId:o}),[x,m]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[o,r]=(0,d.Dv)(t);return[o,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:o}),b=(()=>{const e=c??x;return p({value:e,tabValues:r})?e:null})();(0,i.A)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),m(e)}),[u,m,r]),tabValues:r}}var m=t(2303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function y(e){let{className:n,block:t,selectedValue:a,selectValue:s,tabValues:i}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.a_)(),d=e=>{const n=e.currentTarget,t=l.indexOf(n),o=i[t].value;o!==a&&(c(n),s(o))},u=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.A)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>l.push(e),onKeyDown:u,onClick:d,...r,className:(0,o.A)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:(0,o.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=x(e);return(0,f.jsxs)("div",{className:(0,o.A)("tabs-container",b.tabList),children:[(0,f.jsx)(y,{...n,...e}),(0,f.jsx)(j,{...n,...e})]})}function v(e){const n=(0,m.A)();return(0,f.jsx)(w,{...e,children:u(e.children)},String(n))}},5648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},6390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},1604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},3949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},6468:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-3-ca3a0b86ffb2f19484b74d059021a3ce.png"},2731:(e,n,t)=>{t.d(n,{A:()=>a});const a="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAABsCAYAAACxSq3vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABozSURBVHhe7Z0NeFTVmcf/N5NPCJAggUwmCKFQSSxqQKuJskgQLfDQFShWybqKqbYCba1StoWp1RrwqZuwVmG71kZtLfhUirhljV1ZYlUKtdUEqxJESygkmfAhCRBCvsjd886cA5fLJHPvfOTz/T3P4Zz7zv06l/P+5z3vvXcChunrHExPHy+bTC8jStYM0yepcbkecOh65SGX62vSxPQiWGCYPokORAtxeUQ0/10TbSEyT1anpS32fcr0FsT/DcP0PYSYXKVp2l9JXKSJRKcRHR2zXB7PDmliehiOYJg+SXpt7W5RLRfllNcgEGKTCE17piY9fZ40MT0MCwzTZ3HV1PxMRC2rdV1vkyahL1qWpuvuQy7XbGliehAWGKZPI0TmpyJyKZSLiskOYJUQmTy5zPQQLDBMn8dZW1vYoeuPy0VFbpSIZA6npeXKZaYHYIFh+jwigukQ06JCMV1aK01exHRpejvgrnU6p0gT082wwDD9ApfH0zTY4aCp0nqfxYcQmVnin1WeUaMulyamG2GBYfoNSQcP1rc6HKuh6yXS5EPT5nVER7sPjx79BWlhugl+Dobpd4hoZWyHw/GYiF7+RZq8iCnUCx3Aj0bX1FRLExNhOIJh+h3Ow4cPiCiGbl//Tpq8iG/Tu8WAX1XjdI6QJibCsMAw/RKXx7M3WtMoJ7PVZ/EhROZbIrJZdTglJVGamAjCAsP0W0bV1HxwFlgtpkXbpMmHpj1wNibGTe8zSQsTIVhgmH7N6Jqad6NEJCOmS29Lkw9N+7c6l8stl5gIwQLD9HvSqqvfdtBzMrr+F2nyIiIbt8fl+oFcZCIACwwzIEj1eLaJKVEhdP0DaaJ8jINEptbl+p40MWGGBYYZMKTX1m4VUyNK/O71WbwiM1hUq2rT0u73WZhwwgLDDCjSamro1vVqEc0c8Fm8XCKW3R7+waqwwwLDDDiEyPwmqqODpkseaRKBjZZG06Uap3ORNDFhgAWGGZA4PZ4SISj0MF69NJHIjENU1Kpal2u+NDEhwgLDDFjSa2vXa77fkmnyWbw5mSxRUeKXf7AqDLDAMAOatNratbovJyMCmnNki+KuTkub4VtkgoUFhhnwuGpq1ojK/Kt4OcI56L2l6+UyEwQsMAwjSEtNpaTvT+WiD02bLgr/YFUIiCknwzDE0UsuGdIWF/eYEJXvSpMPXX+1PSrqR5dWV38kLYxFOIJhGEnK55+f0nW9UHzr/pc0+dC0W6N1fRX/iVr7sMAwjAGXx3Os3Zf0fUGaFLc7dN19zOVKl8uMBVhgGMYE/eJddFQUJX1f8ll8iMjmrhYhMrWpqSnSxASABYZh/DDq0KG/t7W30+/7bpEmL5qmfZMexqN8jTQxXcACwzCdMObw4Y8pJyNKqTT50LTvtsTFufUpU2KkhekEFhiG6QKXx1Me3dZWIJrn3sAmojRthcfj+YlcDMjhlJRU2RxQsMAwTABGHT1a165pc0UkUydNPjTtBzUu1wNyqVNq0tO/cTY29nW5OKBggWEYC1xaXf2ZFhW1WAfekyYvGrC6Oi3tQbl4Ed5fzNP1J0W53JOe/mVpHjCwwDCMRdKqq/+Ajg56A9v4wN0g4UT0g1VL5LKXj7KyYkV082gHQM/VDBbRTozYbsC9dsACwzA2cHk8r4po5H4RyTRKE02Vhuua9rNDLtfXpAXDGxp+KoTlYVEc0kQMuDe0Rf8ZhrGLmBbdpGna68KBzv3pExIdEbHMFYryTbF4u89qQNebHW1tKaOOHj0vTv0cjmAYJgjSa2v/T4jLUiEqR6SJvq0Thbi8KZoXiwuhafFtMTEL5NKAgAWGYYIkrabmF/JvLp2UpoAIhxtQeRgWGIYJAWd19dMiMnlcLgZG0+aJqGfA/EVJFhiGCYFDLteV0HU7vxczoiYt7Suy3e9hgWGYIKHnWhzAY5qmnbt7ZJEBM01igWGYIKhxOqfquv6YaM71WawjRClXNvs9LDAMY5O6tLSboGkkLjf7LPbQNe366rS0HLnYr2GBYRgbeFyuOR2+adE0aQoGevhuQEyTWGAYxgZndX20iF6S5GLQRGnaLbLZr+EneRnGJnSbWUQyM0V9E3R9pohmJsmPLCO2Parr+g3ptbX7pKlfwgLDMCFQN3LkqI6YmJnCkW7q8IlNmvwoIGL9e4TAPC8X+yWaUFEhpgzDhEr7vn1oeecdtIrS/PbbQGur/MQ/g26/HcOKiuRS/4QFhmEiQOu7754Tm9b335fWC4kePx6XbNmCqORkael/sMAwTATRT5/2Co0Sm/b9++UnPpKfew7xNwd1t7tPwALDMN2E3tKC5j/8AWc2bULLjh1iTtWOxG99C0PcbrlG/4MFhmF6gI4jR9D0yitor6hA0jPPSGv/gwWGYZiIwQ/aMQwTMVhgGIaJGCwwDMNEjG7NwXC6h+kNaBo/wN5dRFRgOts1/wczPUF/Go+qL1bP3e764SIiAmPeJQsK0xvpa+M0XCIRrv1YIawC09f+wxiG6M3j1nhu4T6vSO5bERaB6c3/QQxjld42jrtDACJ9jJAFRm1OdVQU35Ri+j4dHR3nnK0nRCbSTu+PSB0zaIExb9YT/xEMEyl6anxHytGtEIljBxVysLgw/R3zmDaP+UjQk+JCGI8Zrv7aFhh1YFWzuDD9FTW2zWM+Ehj33ZM+FW6RsSUw5gvN4sL0d7pDZIz77g0+RecQrv4GnZXlhC4zUIjkWDc6stXjnG5sQnNTszcZHSoHDhzwFjN0LuEQGctJXrUadYoOHozSLl68GC+88IK3feONN+Kuu+7y1mPHjvXaGKa3QuNfjX0iHJFGMD61b89neP/dShw6cARDhw3Gl6/PRNaVExEfHyfXCAz5IPncW2+95V3+8Y9/7K3NhKPPlgTGeCEIh4P+bpR9OjvBu+++29tJFhqmN3P27FlvHQ6RUT5FNRUrPtV48jR+vnYT/vbe52JJw6mTRzB8xDBc9qVU3LF4Ji7NSPetaJE//vGP3i/4rqA+Uz9VX+32OaDAGC8ECQxdiGAvbKDtOKphejPkA+RwxmgjWF+gfdn1qdaWVqz+4TP45G8n4YiNRrzjJEZekii++WPR0g7EDXfg1ttvwPiJX0BcXKy3xMTGyK3PQ8JipCuRMffZbn8tC0yo0Qth5+QoqlmzZg2cTqe0MEzPE44oRvkU1VSs+hQJzKu/eRtnTsdib+Un+PyIA8eOf4rLRg3H9VlXI3lQkjfKqT/ZAEdcNE7pjbjxvmvgGu30io3CGLlQ/iXQl3koUUyXAmO8EGoupi5sMBhPTHXKX4JJsXDhQrz88styiWF6HvID5QvBOBxB/hSMT5HAvPHqboxOvwKnGxvx0YflqPyoBq3Ng1BT/QH+acx43DTxRqQOGuVNBDc2nsahozUY880RuDznMrkX+5j7bKe/ltWCLkgo4mLmzTffRFVVFR555BGeDnUTDXvLUFHdLJciQ3ccoychH1BfvMFg3DYYn+o4q6OttQNxsYMxZcpU3DJ7GlLTovCF8dn4rCUBT775Ml7btQ1Nn7dg1FknxsSNxfFjDXLr4DD32U7/A0YwVEi9qI6JuXg+Zwej8pG4GIWFwrZHH330gttm3RnBVDw9A8u3yoWLyMZDRXkoW16MCmnxy9U3ILXuMhQ+twgZ0nQBjWVYvagM2c8VYvYIaetGdj2moWi8B5vvSJWWzqjA+ptL4PzFOszvUvvr8MqSfHju2Y6lV/ss1o/Rd2lra/OO5WC+0UPxKYpgSjdVIHUk/SlsOi65Lh1bx75PPsGejyrR3pyCUyfrkHD8MHJTrsKlienY0laB8VNG4p8XXYmUUcENvPb2dm9tt8+dCowyU63mYNHR0V5bsJhPqrO7RyQ006ZNC5jhDpa6rcuRfyAf27+dLS3SMVL3oGShKeeztwSz59WjsMqNyc2Gb+ZdRUh+NgN7nluAc1tEx6PyiVwUTdiMzXeaJaYZFY/PEc63ARsW9ozzWXf+XVit5WLd/a+h8j9nI0lazTRvW46Mm4uxbJeOVdf5bANBYMjZyC+MyVmrDkfbUSGBoW3s5DRJYLb+tgIjh39JbCuNJDBCaITLo6X1DD7duxcez2HoLaNR4/kYg08cR2NsFNLGXofTLQfxwCM5uDRjtNzWOqQBdN52BabL+ExdDMLqDu1A9+MzMjIwffp0b1tFLiQ6YRGXxgY0NPgJ1xurUObPnpiMpKSkC0rVOxuQvKYAefHxF36WnCAEJQHJRltiPHK+UwjnT4pRekzuU7F7PZZWFKDQLC6dnWPEaRbHbUCz74vJD9nIqChE0Y5Ozq25AsWP70TGVXJ5AKF8wegfVjCua2c7Ix1nhcC1URTlq9vbdV/dJgRPi8fErKtw7bU5SHE1wDX6UiRlzYBj8AhUfPAyomNacOTIcbkn+wRz/gEngLQjpbah8vzzz/vNt9D0iB7CI7GhuqvEryUOlGL57CxkfXUBFtw2B7kTxmHOko2obK9D6YMzkL9mJ/DrhzDj5hmiLEdpHZDzvXqUzDM7fxk2rJ2Mgrl+Jzz+GTEb7jX1WPZEmXBhRRVKVm7GgpXnp07NezeKcxyHcTPpHPMwbsIcLH+p0rCNRao3iu03ismKGYpCFmBjtVxUtNeL6WA+siblie0WIC9TXJsV4to0ys/PkYFl/7EMld9f73daWPWiGzvvKMSyCdLQBQ07VmNG3mrsCi0VEFYaG5tkyz7kC2qKYxfaJhSfUjmYtlYdraJQbSytLWcREzsEmVk5yJyUDkdsLVKcQ7D3sx2YPOUajEgZLvdkD2Of7fTbr8AYd6B2GA6BoSkR5V4owUttf2JjjGpef/11abWDcOYlbsSvLMeesu3Y/sZ27Px0v3Dw2ciMTsXstduxYWUu8K/F3s+2v1GE2aQriSICifftQVG1qRhlDy7FfJvT1tSFhSg8sByF8tu/bpMbG6eKCEZ92x/YKETrNWQ+UY79u+gcdmL/X4uQ+focFLxUJVeKDDtXiGlaUiH2fLhTXptyMaV7zSvAFx05fRHct22G+1nTJ9WvwP1SHgrvzZKGzqnaugwLHgYKf78KOZ3NtcLIp38/iN+++gYq/rZXWi7Gc/hYwHW6gnzB7GjGdiDUukEJTIeMXETE4iuqLfr+2cd4/rm1OHLY411OHpaG63KmYurUab5MjR4dtB+r7ez0k7Ccwg6HwCho+kPRDIlNV1ENfWafBtRVJMM54kK1SE23O7or8MpTwNJ55/M01snAopX5KKNv/7pSFK7NQOG3s+E7o2aU/eIhJDyxHgVfMpxTUiYK1hYh4cESlEVyxnTnL1FyQX4oCZn3FqOw+SFs/LM0Gci+vxi5zxmnfOL8n1oO5w+XiklUVzSj8tl8zHg2A0UkLonSHGGcMom5b/9BvwJC4lK6bQcSEwch+4qJ0mqPUH1BiVNQAuONYIzFF820tXUgwQEsvvUW1H32F7zxv7/DifoT3s/OtvvyPKdOnMJ/b9qGUycvClcDQueqztsOAXMwxjpUVHRC0yD1NKGKaqgOD9lY9FQGiqdnIX9FMUq2lKHigH2PbdiyHkU5S7FgvDTY5aqlWP/VzZidvQxYudzgYJWoeD0Xedf4EbwRwj61FBXBfbFaIjc7SwqdkVTkzM1FedXFEy3E52DpSpyb8jW/V4zVjevgnnnxXs4hpmG7Hp+DvPsqsOh7Qoi6SVwIEo45N93gbZtFxiguX7/1ZmkNDru+ES4fGuEcTn8zX0YuFxaH+J9tPt6EpCgH5mROwu4/leKtt/4HJ0+exOTsPBw/UY/Kdz34/Gi93FtoWOlTpwJjvICqhIrKr5DQ/OpXvzpnI9EhW7jIWPhL7K/aCff8bCQ3lIkpUxbG3SaiCcs6U4XNz5Zj+X2d30EJTDyy71iG3LoC5M/1sxe/ydUzwp6MpG50yHM0d54gSZrrFlM+N9bvrsSGh8tRsKLr67JzRR4eOrUKFVVuVN1XgI0hptTs4k9kwi0uRp+w4xvGbexsR8TGxSI5pR0NJ6tx+nTz+ehF1JSPOd3UgROfNyM13onJIyZh8RVzMC1xLGr/tAOZcWPQ8ckhTEu6AkOG2h9gxvO1c96Wp0h2L0YgKIKhsMt498gITZtIfIImXoT+1+Vh/uJCrCstR1HiMpTulp8FoPnNErixFPNDvUPi965+JrJn7cTmXX6ihepdwp4DW++sRccjftOei/Mnn+3BTtk08sq2nWISaaYKZVvqkZvZ2a3lVCxaU4CyWXnYONONRV0+GyOmKfduQOmaPKSOXYSSF7Ow7o7V2GU/Kg8Js8iES1yIUH0hGEdVfPn6y3H9LYnQ4vbi6JFar7j4IhgdQ5Mz0Drsizh8xoGqvx/E0NZkXDtsCr7umoW7M27H4jG3ITXZiegY+4+bBHvOlgSGhIAyyOGksztFlJ9RT/nOmjVLWu1QgY1Pl6LSeJu4oRzlFbORKpO1SamZSP2w6rxTXhBNNKD0xRIUfD/f/8NyIROPvCXrEf9wAYr/bHD1ujKspuT0U8uQR7OPRl8/qrxRlxCAp0uwS/apatt6lKhtU/OQf38Jin5eeV44GipRsmYj6v0I5Pz2Uix/tgINqs90Z21lPtwj3MjvSlDH56NwbTGK7g2ck8rIzDoX4cRftwoblpRjvr8kcoQxiky4xIUI9g6Q2TmD9amJky7FwnuuxdS5MXAM/hT1x4/JSEaHIyEF+qgvYld7E1478D4+3r8HUS1RGBQzCGfamnBiSANaWlrknqxjPlerQmM5glEveUUKysGQsFAJ6RmYdqf4vhVONN0JbUIuZuSMg3NqCZKf3oACmU+Jn16AkvQS5NLnk7Lwja2GaGK3cNaK5VgwvYscQ6ikz8eGdx4CnsqF05mFrAkaxs3biPgV5ecfwjuwE+u+sx5ldJtZCMYra9x47UNSmwZUbi2E+/fl8pZ2EmY/UYq8dxYgUwx6GvjjFpUgYcU6v7eQJy9Zh4cSNyA/04msSeOgjc7DhuRiVP56vrhuXUFTvkVB5VMy7ixCsYgJ3S92t8ScF5lwiQsRLl8IZT/0+y9XXTMBsxZOxNUzm3Hm7H40nmr0RjJ6Rwzik0ejZfRYlI/QseVMOX6yYzVebnoPI/OGYmQQT/MGe66aUKKLpIhMqtCOqVB70KBBco3g8Kf6JCz8WzBMX6Kpqck7lukpXPU0ryqdESmfUhz2HMWObVU4uC8OMVGpiImWryDIUyp68iu4757ncdv9QzFmnP0neYPpM9GtEYzxljS16QJ3dpuaYXorwfqC2Rmt7ofylf5SCupOLDHKmYL5d16DmxckYdDwT3DsmO9ZGFWIE40ng56Wmc81kLAoLEcw9P5FXFwcYmPP/64Ewww0WltbvTkMei/PbgRDkINTIZ+ilyat+hTdDPnHP/7hjfZJbOh9PfXjbGbOnGnGng8O4uP3j+PAx4MQnZAobDvxlduuxORrJyAhwd70X/WZXsykflM/6Z0kIpDQdCowBF0IJTJ0MYjExJ64h8owvYPGRt/tMHI2JS5WnE35FNVGgSGs+BSJCkUsJCgU8at2VzQcP4HKDw+i9mAzcqenw5ke3I+3mfusXngkAglMl1Mk48bUpguiXttmmIEGjX31Uw2KQA6m8Lce2WifVnyKREUVqyQNH4acaZOwQEydghUXOjcSw87OPxCWcjC0IyqkXGfOnJFWhhlY0NhX395WnKszlC+pYtWnVBRDpbvylnRuxvO122+/AmPcCbWNByAFpzkZwwwkaMzT2Dc6mtlP7KL8yopPUc6FcjDGKVJnz5KFC2Ofg+kf4TcHQyizMQ+jQkRaTk5O9n7OMAOB+vp6r5OpRKed/ItC+RTVKg+jpki03JlPkZD4i1go8asEJxJQn6l/1F/VZ6PYWOlzQIFRF4NqNR8jZaMDDh061LsOw/Rn6GVBGvt0t4eczHgnxY6zEeRHqpBfKZ+iL27ad2/xKeoznZdK7FKfVX9VsUKnORjjDtQO1QHogCQyKrvMMP0VGuM01mnMG32AisLYtoPanyokMr3Bp+gc1NSIiup7MARM8hovpvGAVCgBdPr0ae9nDNPfoLFNY1yNdzX+CaNf2MXsU9RW++9pn1J9Vn5uPFdj2yoBBUahdq4uhJqTkdqdOnVKrsUw/QMa0zS2aYyr6YHZ4YLBuK3Rp9RxetKnzH1W52Xus7EdiC4FRu1IHUAVdbHpJGiORu8p0A9IM0x/gMYyjWljQpfGvNkPCFXbxbwvfz5FSdbugo5ltc926DTJa8SYmKKiMuDGJBXVxJAhQ5CQkOBtM0xfgqYGKnJQTka1cv5wOJxCuZ3yJ6rJj1Qhf+oOnzL3WfVbFeqj6jdht8+WBUbVqhhFxnhBqE3vV9Djz/zeEtMXUDcs6H0bJSrK0ToTF8Kus5kx+lMgnyJfIqEJl09Rn0lYVALbSp+D6a8lgSHUaupiUDFfEHVRVJsuBr2OPnjwYO+2DNOboIQmTQuUkylHU+1IigvREz7V3X22LDCEWtV4MahWF8R4UahNF0atp94apTkeFdUJhok0alzSrVcq5FwUrSgnIgdTjqXGpVqmz9V6oThaZ5h9SvmLKsqf/PkU+RP5lT+fUtuqPlN/qd+qL+Y+G/ut1glHn20JDKFWp1oV6gzV1CFVqwtiLMZtqBj3wzDhxuwgxmJ0JirKyegzVYfT0brC7AtU7PoUtf1h7IOxv1S6o89BCwyhOqeK6rD5ApjbhKoZpjsgx1G1ciRz27hMtbEojO1wQr6hanNR/qOK2abW84c6f399NNvMRW0fCrYFhjBuojrnrxgvhvkzKgzTXZidh4rR2cyfGYvC2I4EyifMfmIsXfmU2pZQ52rsB5Wu+kw2tY2xDoWgBEZh7hTVVopal2G6C6PTWClqXWPdHZj9Q/lMoKJQbeM5qz4FKmpdYx0qIQkM4a9zVKtiXFZtY80w3YE/BzK3jcsKY7u7MPqG0V9UMS6rtkK1/fWBanPbuKwwtkMD+H/lRHxVfcHMJwAAAABJRU5ErkJggg=="},2226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},8809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},2560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},8919:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-8-63dba6e83343581b795ed95bec1d291a.png"},5774:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-9-21a015fe1afa0b648789ebac66f9553b.png"},9377:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/Staking-13-08a79594c56d19dbdd2b8d71764ef5fd.png"}}]); \ No newline at end of file diff --git a/zh/assets/js/runtime~main.5968bda4.js b/zh/assets/js/runtime~main.55bf6dbe.js similarity index 97% rename from zh/assets/js/runtime~main.5968bda4.js rename to zh/assets/js/runtime~main.55bf6dbe.js index 7097699432e..39a69a36ce7 100644 --- a/zh/assets/js/runtime~main.5968bda4.js +++ b/zh/assets/js/runtime~main.55bf6dbe.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,t,c={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,d,t)=>{if(!f){var c=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,d,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var c={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(t,c),t},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({67:"246b0099",793:"59c77e11",825:"218dff67",1051:"c4adda54",1235:"a7456010",1299:"a9920f74",1485:"0ac64da7",2904:"8f66e27e",2989:"bdd9f60e",3024:"b0888f6e",3506:"99c6e3f2",3552:"b2a1b465",3577:"d5f3a463",3682:"c5c993f7",4039:"0caadbe8",4134:"393be207",4223:"4bac219f",4332:"75122f20",4545:"2d52d47d",4580:"666562f2",4583:"1df93b7f",4649:"070e8e4e",4679:"d77865d9",4832:"cadf5aed",4993:"90543902",5079:"6b2f73c3",5368:"18f8c722",5582:"87255d86",5622:"ad7c4703",5709:"fb5bfad4",5712:"56ae784e",5742:"aba21aa0",5849:"3b1b97f6",6061:"1f391b9e",6235:"5cb26121",6528:"ba11bf3c",6566:"7b00294a",6605:"fd88ef41",6847:"4104baf8",6969:"14eb3368",7048:"f1e7ca13",7098:"a7bd4aaa",7188:"285f32e8",7649:"f06d8a94",7678:"7812d9ce",7910:"78cca72d",8018:"301338cd",8401:"17896441",8445:"114fbca4",8732:"f52d6109",9034:"c00d4aa2",9048:"a94703ab",9060:"9dfeb711",9220:"ca9ace4e",9483:"9c27cfb8",9521:"5e1c30c8",9619:"4a0438dd",9647:"5e95c892",9662:"e67538e6",9697:"d8ef6997"}[e]||e)+"."+{67:"dfd8652c",793:"6d66924d",825:"196902ad",1051:"cdf7bdc7",1235:"deb810c9",1299:"b5ceffd2",1485:"ea0d47bb",1688:"433c2b5b",2237:"c851d8b1",2440:"ecd0621f",2904:"9b9c4f89",2989:"2f4a8acc",3024:"7a1b2b29",3506:"357a9a55",3552:"e1ef23bb",3577:"a6452876",3682:"228f29cd",4039:"14dd34c0",4134:"5b48e3e0",4223:"0d918554",4324:"b14b8aad",4332:"6a023a73",4545:"6da9a288",4580:"757808df",4583:"c0d080f8",4649:"7f4b04df",4679:"2eccb1a7",4832:"6ac1ce75",4993:"ee2bd8c1",5049:"7f13b97c",5079:"e6e30c56",5368:"800e12bc",5394:"83d77ce3",5582:"ee1b3083",5622:"a110a2e3",5709:"9821feae",5712:"6bab72e6",5742:"08d6695f",5849:"7d6b6463",6061:"fc18f174",6235:"3007a501",6528:"11fdc3f4",6566:"a4e992d5",6605:"3c8c2866",6688:"86f0bb7d",6847:"66caa455",6969:"4f11b87f",7048:"ec796d04",7098:"c4e87eeb",7188:"26006354",7649:"bef28feb",7678:"f25f2f82",7910:"1e87b845",8018:"ffef012d",8401:"3769c7ca",8445:"0cc39324",8732:"c8f6fcb9",8913:"0680f2c1",9034:"31ef1f02",9048:"5d6981a0",9060:"6220e055",9220:"faac463d",9462:"be2eb63e",9483:"d9994d8c",9521:"719f9a2e",9619:"37d1b0fa",9647:"e4c313e0",9662:"e11bf4da",9697:"708fd74f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",b.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/zh/",b.gca=function(e){return e={17896441:"8401",90543902:"4993","246b0099":"67","59c77e11":"793","218dff67":"825",c4adda54:"1051",a7456010:"1235",a9920f74:"1299","0ac64da7":"1485","8f66e27e":"2904",bdd9f60e:"2989",b0888f6e:"3024","99c6e3f2":"3506",b2a1b465:"3552",d5f3a463:"3577",c5c993f7:"3682","0caadbe8":"4039","393be207":"4134","4bac219f":"4223","75122f20":"4332","2d52d47d":"4545","666562f2":"4580","1df93b7f":"4583","070e8e4e":"4649",d77865d9:"4679",cadf5aed:"4832","6b2f73c3":"5079","18f8c722":"5368","87255d86":"5582",ad7c4703:"5622",fb5bfad4:"5709","56ae784e":"5712",aba21aa0:"5742","3b1b97f6":"5849","1f391b9e":"6061","5cb26121":"6235",ba11bf3c:"6528","7b00294a":"6566",fd88ef41:"6605","4104baf8":"6847","14eb3368":"6969",f1e7ca13:"7048",a7bd4aaa:"7098","285f32e8":"7188",f06d8a94:"7649","7812d9ce":"7678","78cca72d":"7910","301338cd":"8018","114fbca4":"8445",f52d6109:"8732",c00d4aa2:"9034",a94703ab:"9048","9dfeb711":"9060",ca9ace4e:"9220","9c27cfb8":"9483","5e1c30c8":"9521","4a0438dd":"9619","5e95c892":"9647",e67538e6:"9662",d8ef6997:"9697"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>d=e[a]=[f,t]));f.push(d[2]=t);var c=b.p+b.u(a),r=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+c+")",r.name="ChunkLoadError",r.type=t,r.request=c,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,t,c=f[0],r=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,d,t,c={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,d,t)=>{if(!f){var c=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(r=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,d,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var c={};a=a||[null,f({}),f([]),f(f)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(t,c),t},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({67:"246b0099",793:"59c77e11",825:"218dff67",1051:"c4adda54",1235:"a7456010",1299:"a9920f74",1485:"0ac64da7",2904:"8f66e27e",2989:"bdd9f60e",3024:"b0888f6e",3506:"99c6e3f2",3552:"b2a1b465",3577:"d5f3a463",3682:"c5c993f7",4039:"0caadbe8",4134:"393be207",4223:"4bac219f",4332:"75122f20",4545:"2d52d47d",4580:"666562f2",4583:"1df93b7f",4649:"070e8e4e",4679:"d77865d9",4832:"cadf5aed",4993:"90543902",5079:"6b2f73c3",5368:"18f8c722",5582:"87255d86",5622:"ad7c4703",5709:"fb5bfad4",5712:"56ae784e",5742:"aba21aa0",5849:"3b1b97f6",6061:"1f391b9e",6235:"5cb26121",6528:"ba11bf3c",6566:"7b00294a",6605:"fd88ef41",6847:"4104baf8",6969:"14eb3368",7048:"f1e7ca13",7098:"a7bd4aaa",7188:"285f32e8",7649:"f06d8a94",7678:"7812d9ce",7910:"78cca72d",8018:"301338cd",8401:"17896441",8445:"114fbca4",8732:"f52d6109",9034:"c00d4aa2",9048:"a94703ab",9060:"9dfeb711",9220:"ca9ace4e",9483:"9c27cfb8",9521:"5e1c30c8",9619:"4a0438dd",9647:"5e95c892",9662:"e67538e6",9697:"d8ef6997"}[e]||e)+"."+{67:"dfd8652c",793:"6d66924d",825:"196902ad",1051:"cdf7bdc7",1235:"deb810c9",1299:"b5ceffd2",1485:"ea0d47bb",1688:"433c2b5b",2237:"c851d8b1",2440:"ecd0621f",2904:"9b9c4f89",2989:"2f4a8acc",3024:"7a1b2b29",3506:"357a9a55",3552:"e1ef23bb",3577:"a6452876",3682:"228f29cd",4039:"14dd34c0",4134:"5b48e3e0",4223:"0d918554",4324:"b14b8aad",4332:"6a023a73",4545:"6da9a288",4580:"757808df",4583:"c0d080f8",4649:"7f4b04df",4679:"2eccb1a7",4832:"6ac1ce75",4993:"ee2bd8c1",5049:"7f13b97c",5079:"e6e30c56",5368:"800e12bc",5394:"83d77ce3",5582:"ee1b3083",5622:"a110a2e3",5709:"9821feae",5712:"a34390af",5742:"08d6695f",5849:"7d6b6463",6061:"fc18f174",6235:"3007a501",6528:"11fdc3f4",6566:"a4e992d5",6605:"3c8c2866",6688:"86f0bb7d",6847:"66caa455",6969:"4f11b87f",7048:"193296a3",7098:"c4e87eeb",7188:"ce1fa969",7649:"bef28feb",7678:"f25f2f82",7910:"1e87b845",8018:"ffef012d",8401:"3769c7ca",8445:"0cc39324",8732:"c8f6fcb9",8913:"0680f2c1",9034:"31ef1f02",9048:"5d6981a0",9060:"6220e055",9220:"faac463d",9462:"be2eb63e",9483:"d9994d8c",9521:"719f9a2e",9619:"37d1b0fa",9647:"e4c313e0",9662:"e11bf4da",9697:"708fd74f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",b.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/zh/",b.gca=function(e){return e={17896441:"8401",90543902:"4993","246b0099":"67","59c77e11":"793","218dff67":"825",c4adda54:"1051",a7456010:"1235",a9920f74:"1299","0ac64da7":"1485","8f66e27e":"2904",bdd9f60e:"2989",b0888f6e:"3024","99c6e3f2":"3506",b2a1b465:"3552",d5f3a463:"3577",c5c993f7:"3682","0caadbe8":"4039","393be207":"4134","4bac219f":"4223","75122f20":"4332","2d52d47d":"4545","666562f2":"4580","1df93b7f":"4583","070e8e4e":"4649",d77865d9:"4679",cadf5aed:"4832","6b2f73c3":"5079","18f8c722":"5368","87255d86":"5582",ad7c4703:"5622",fb5bfad4:"5709","56ae784e":"5712",aba21aa0:"5742","3b1b97f6":"5849","1f391b9e":"6061","5cb26121":"6235",ba11bf3c:"6528","7b00294a":"6566",fd88ef41:"6605","4104baf8":"6847","14eb3368":"6969",f1e7ca13:"7048",a7bd4aaa:"7098","285f32e8":"7188",f06d8a94:"7649","7812d9ce":"7678","78cca72d":"7910","301338cd":"8018","114fbca4":"8445",f52d6109:"8732",c00d4aa2:"9034",a94703ab:"9048","9dfeb711":"9060",ca9ace4e:"9220","9c27cfb8":"9483","5e1c30c8":"9521","4a0438dd":"9619","5e95c892":"9647",e67538e6:"9662",d8ef6997:"9697"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>d=e[a]=[f,t]));f.push(d[2]=t);var c=b.p+b.u(a),r=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+t+": "+c+")",r.name="ChunkLoadError",r.type=t,r.request=c,d[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,t,c=f[0],r=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in r)b.o(r,d)&&(b.m[d]=r[d]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/zh/develop/auto-sdk/auto-id/index.html b/zh/develop/auto-sdk/auto-id/index.html index 1f16af49a9b..510e1c9bd86 100644 --- a/zh/develop/auto-sdk/auto-id/index.html +++ b/zh/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/consensus/index.html b/zh/develop/auto-sdk/consensus/index.html index c735703cc22..6494136cf4f 100644 --- a/zh/develop/auto-sdk/consensus/index.html +++ b/zh/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/drive/index.html b/zh/develop/auto-sdk/drive/index.html index 00832993bd1..c29e1512572 100644 --- a/zh/develop/auto-sdk/drive/index.html +++ b/zh/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/index.html b/zh/develop/auto-sdk/index.html index 3a4f0fb6c12..05ae98f89d7 100644 --- a/zh/develop/auto-sdk/index.html +++ b/zh/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/intro/index.html b/zh/develop/auto-sdk/intro/index.html index 29f0fb37769..94d96e6f4a4 100644 --- a/zh/develop/auto-sdk/intro/index.html +++ b/zh/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/utils/index.html b/zh/develop/auto-sdk/utils/index.html index ca5ad250d27..29304fb5ca5 100644 --- a/zh/develop/auto-sdk/utils/index.html +++ b/zh/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/xdm/index.html b/zh/develop/auto-sdk/xdm/index.html index 8da7392dab1..b4c67123326 100644 --- a/zh/develop/auto-sdk/xdm/index.html +++ b/zh/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/intro/index.html b/zh/develop/intro/index.html index 757478f9ccc..ef1524a870e 100644 --- a/zh/develop/intro/index.html +++ b/zh/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/block-explorer/index.html b/zh/develop/nova/block-explorer/index.html index 7b9b0fb58de..8014b9a9b28 100644 --- a/zh/develop/nova/block-explorer/index.html +++ b/zh/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/faucet/index.html b/zh/develop/nova/faucet/index.html index a3aaa7aaa6e..ceb94ac469a 100644 --- a/zh/develop/nova/faucet/index.html +++ b/zh/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/general/index.html b/zh/develop/nova/general/index.html index 55b77986e91..c85e02034fd 100644 --- a/zh/develop/nova/general/index.html +++ b/zh/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/foundry/index.html b/zh/develop/nova/guides/foundry/index.html index a8a5f45b4c7..ba8abdf10a0 100644 --- a/zh/develop/nova/guides/foundry/index.html +++ b/zh/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/hardhat/index.html b/zh/develop/nova/guides/hardhat/index.html index 4d84611c653..d0fd2da9ac1 100644 --- a/zh/develop/nova/guides/hardhat/index.html +++ b/zh/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/local-development/index.html b/zh/develop/nova/guides/local-development/index.html index 0823845ad51..473b6d16b82 100644 --- a/zh/develop/nova/guides/local-development/index.html +++ b/zh/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/remix/index.html b/zh/develop/nova/guides/remix/index.html index 6ab540bcb59..ec62ee9dfdf 100644 --- a/zh/develop/nova/guides/remix/index.html +++ b/zh/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/index.html b/zh/develop/nova/index.html index 82331500fcd..021f85e41d5 100644 --- a/zh/develop/nova/index.html +++ b/zh/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/introduction/index.html b/zh/develop/nova/introduction/index.html index ae5fc90241f..98b326be668 100644 --- a/zh/develop/nova/introduction/index.html +++ b/zh/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/metamask/index.html b/zh/develop/nova/metamask/index.html index 38108acc36e..65db965dd0c 100644 --- a/zh/develop/nova/metamask/index.html +++ b/zh/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/cluster/index.html b/zh/farming/advanced-cli/cluster/index.html index f28ce325e13..ef83b96da0d 100644 --- a/zh/farming/advanced-cli/cluster/index.html +++ b/zh/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/install/index.html b/zh/farming/advanced-cli/install/index.html index 61684c7ffc1..f902387c9b3 100644 --- a/zh/farming/advanced-cli/install/index.html +++ b/zh/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + @@ -30,9 +30,9 @@

    +
    chmod +x subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    chmod +x subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13
  • 使用下面的命令启动节点。 Replace <NODE_DATA_PATH> with the path where you want to store the node database and <YOUR_NODE_NAME> with a nickname of your choice. 务必复制整个命令:

    -
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
    +
    ./subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path "<NODE_DATA_PATH>" \
    --name "<YOUR_NODE_NAME>" \
    --farmer
  • ::: note @@ -60,7 +60,7 @@

    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    +
    # Replace <WALLET_ADDRESS> with your wallet address
    # Replace <PATH_TO_FARM> with the directory where you want to store the plot
    # Replace <PLOT_SIZE> with the size of the plot (e.g. 10GB, 2TiB)

    ./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13 farm \
    --reward-address <WALLET_ADDRESS> \
    path=<PATH_TO_FARM>,size=<PLOT_SIZE>

    你应该在终端看到类似的输出:

    2024-09-09T20:36:25.712636Z  INFO subspace_farmer::commands::farm: Connecting to node RPC url=ws://192.168.0.101:9944
    2024-09-09T20:36:25.716493Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloading all segment headers from node...
    2024-09-09T20:36:25.724936Z INFO subspace_farmer::node_client::caching_proxy_node_client: Downloaded all segment headers from node successfully
    2024-09-09T20:36:25.727059Z INFO subspace_networking::constructor: DSN instance configured. allow_non_global_addresses_in_dht=false peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98 protocol_version=/subspace/2/0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:25.727805Z INFO libp2p_swarm: local_peer_id=12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:28.661238Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Checking plot cache contents, this can take a while
    2024-09-09T20:36:28.664650Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plot_cache: Finished checking plot cache contents
    2024-09-09T20:36:28.671027Z INFO {farm_index=0}: subspace_farmer::commands::farm: Farm 0:
    2024-09-09T20:36:28.671041Z INFO {farm_index=0}: subspace_farmer::commands::farm: ID: 01J76ZD8HXC742BQ40V5W22K3P
    2024-09-09T20:36:28.671045Z INFO {farm_index=0}: subspace_farmer::commands::farm: Genesis hash: 0x0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34
    2024-09-09T20:36:28.671048Z INFO {farm_index=0}: subspace_farmer::commands::farm: Public key: 0xa082fac986cd03f70bdfa1d0c1885bdc384da1b8c09f43aa1687b1e00f74c014
    2024-09-09T20:36:28.671054Z INFO {farm_index=0}: subspace_farmer::commands::farm: Allocated space: 14.0 TiB (15.4 TB)
    2024-09-09T20:36:28.671057Z INFO {farm_index=0}: subspace_farmer::commands::farm: Directory: /mnt/plots/15013
    2024-09-09T20:36:28.671072Z INFO subspace_farmer::commands::farm: Collecting already plotted pieces (this will take some time)...
    2024-09-09T20:36:28.671161Z INFO subspace_farmer::farmer_cache: Initializing piece cache
    2024-09-09T20:36:32.734041Z INFO subspace_farmer::commands::farm: Finished collecting already plotted pieces successfully
    2024-09-09T20:36:32.734368Z INFO actix_server::builder: starting 2 workers
    2024-09-09T20:36:32.734473Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
    2024-09-09T20:36:32.735137Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::plotting: Subscribing to archived segments
    2024-09-09T20:36:32.735211Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::farming: Subscribing to slot info notifications
    2024-09-09T20:36:32.735247Z INFO {farm_index=0}: subspace_farmer::single_disk_farm::reward_signing: Subscribing to reward signing notifications
    2024-09-09T20:36:32.736239Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/127.0.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.738336Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/192.168.0.101/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:36:32.758708Z INFO subspace_farmer::commands::shared::network: DSN listening on /ip4/172.17.0.1/tcp/30433/p2p/12D3KooWGHnvGGALKoN8GWKsRr8hemN2kkr6Q96Y4V4BXLerSS98
    2024-09-09T20:37:16.959290Z INFO subspace_farmer::farmer_cache: Synchronizing piece cache
    2024-09-09T20:37:17.151681Z INFO {farm_index=0}:{sector_index=11800}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.151929Z INFO {farm_index=0}:{sector_index=11801}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.04% complete)
    2024-09-09T20:37:17.152064Z INFO {farm_index=0}:{sector_index=11802}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.05% complete)
    2024-09-09T20:37:17.155181Z INFO subspace_farmer::farmer_cache: Finished piece cache synchronization
    2024-09-09T20:37:32.155736Z INFO {farm_index=0}:{sector_index=11803}: subspace_farmer::single_disk_farm::plotting: Plotting sector (82.06% complete)
    @@ -70,8 +70,8 @@

    你正在
    ::警告 Windows 无输出错误

    如果你遇到节点不输出任何内容并且没有给出错误代码的错误,则你可能只需要安装最新的 Visual C++ 可再发行组件包here

    第 1 步:下载高级的 CLI 可执行文件


    - - + +

    步骤 2:启动高级CLI 节点


    warning

    A Windows Defender Firewall has blocked some features of this app warning may appear. @@ -81,7 +81,7 @@

    # 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-mainnet-2024-nov-06.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"

    +
    # 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-mainnet-2024-nov-13.exe `
    run `
    --chain mainnet `
    --base-path NODE_DATA_PATH `
    --farmer `
    --name "INSERT_YOUR_ID"
    note

    Using run, setting --base-path and specifying --chain is mandatory.

    1. 你应该在终端中看到类似的内容:
    2. @@ -92,7 +92,7 @@

        # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-06.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
      # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    .\subspace-farmer-windows-x86_64-skylake-mainnet-2024-nov-13.exe farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. 你应该在终端中看到类似的内容:
    @@ -103,7 +103,7 @@

    最低 macOS 版本

    最低支持的 MacOS 版本是版本 12+

    第 1 步:下载高级 CLI 可执行文件


    - +

    步骤 2:启动高级CLI 节点


    warning

    尝试启动节点时,您可能会被提示:点击cancel,不要将其移动到回收站。 @@ -114,13 +114,13 @@

  • 然后,我们使用以下命令启动节点
  • -
    # 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-mainnet-2024-nov-06 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    +
    # 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-mainnet-2024-nov-13 \
    run \
    --chain mainnet \
    --base-path NODE_DATA_PATH \
    --farmer \
    --name "INSERT_YOUR_ID"
    note

    使用run时,设置 --base-path 和指定 --chain 是强制性的。

    1. 你应该在终端中看到类似的内容:
    2. @@ -130,7 +130,7 @@

      # Replace `PATH_TO_FARM` with location where you want you store plot files
      # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
      # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
      ./subspace-farmer-macos-aarch64-mainnet-2024-nov-06 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE

    +
    # Replace `PATH_TO_FARM` with location where you want you store plot files
    # Replace `WALLET_ADDRESS` below with your account address from Polkadot.js wallet
    # Replace `PLOT_SIZE` with plot size in gigabytes or terabytes, for example 100G or 2T (but leave at least 60G of disk space for node and some for OS)
    ./subspace-farmer-macos-aarch64-mainnet-2024-nov-13 farm --reward-address WALLET_ADDRESS path=PATH_TO_FARM,size=PLOT_SIZE
    1. 你应该在终端中看到类似的内容:
    @@ -148,8 +148,8 @@

    mkdir -p ~/.local/bin

    Download the Executable Files, using the appropriate commands:

    -

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-06

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-06
    -

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-node-ubuntu-aarch64-mainnet-2024-nov-06

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-06/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-06
    +

    x86_64 Ubuntu Executables

    Version 2 - for older processors since ~2009 and some old VMs

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-v2-mainnet-2024-nov-13

    Version skylake - For newer processors since ~2015

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-x86_64-skylake-mainnet-2024-nov-13
    +

    Aarch64/64-bit Raspberry Pi Executables

    Node:

    wget -O ~/.local/bin/subspace-node https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-node-ubuntu-aarch64-mainnet-2024-nov-13

    Farmer:

    wget -O ~/.local/bin/subspace-farmer https://github.com/autonomys/subspace/releases/download/mainnet-2024-nov-13/subspace-farmer-ubuntu-aarch64-mainnet-2024-nov-13

    By default, these commands download the executable files to the ~/.local/bin directory. You can change the directory by modifying the respective string.

    You can use the same commands to update the node.

    diff --git a/zh/farming/advanced-cli/taurus/index.html b/zh/farming/advanced-cli/taurus/index.html index a9fcad27698..ea715b4c7e9 100644 --- a/zh/farming/advanced-cli/taurus/index.html +++ b/zh/farming/advanced-cli/taurus/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/tips/index.html b/zh/farming/advanced-cli/tips/index.html index 1a219e4f8f0..62127c811fa 100644 --- a/zh/farming/advanced-cli/tips/index.html +++ b/zh/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/common-problems/index.html b/zh/farming/common-problems/index.html index 19ff9f1b9c8..dc9331a68e6 100644 --- a/zh/farming/common-problems/index.html +++ b/zh/farming/common-problems/index.html @@ -12,14 +12,14 @@ - +

    常见问题

    虽然目标是提供没有漏洞的软件,但用户可能遇到某些错误,有些问题可以被完全忽略,而其他问题则需要注意。如果你仍然遇到问题,请参阅我们的 论坛 或访问我们的 Discord 服务器寻求帮助。

    程序问题

    这些错误和警告与具体组件紧密相关。 在本节中,我们将着重指出已知问题,提供可用的补救步骤来解决这些问题,并说明其严重程度: 🟢 🟠 🔴

    -
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 此错误与遥测服务器相关。 这种情况可能偶尔发生,但对耕作操作没有任何影响,可以安全地被忽视。

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 当两个或多个有效的块在相同区块链高度创建时会出现这种情况。一开始,网络节点可能会对哪个区块添加到链中产生分歧,导致多个临时分叉。 一旦分歧解决,被丢弃的分叉中的区块就变成孤块,链进行重组以便将获胜的分叉中的区块包含到链中。

    这个问题应该可以自行解决。

    Last Confirmed: mainnet-2024-nov-06
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 此警告消息不会影响您的奖励或节点的操作。 它只是一个显示网络正常运行的日志消息。

    Last Confirmed: mainnet-2024-nov-06
    +
    WARN Consensus: telemetry: ❌ Error while dialing /dns/telemetry.subspace.foundation/tcp/443/x-parity-wss/%2Fsubmit%2F: Custom { kind: Other, error: Timeout }

    🟢 此错误与遥测服务器相关。 这种情况可能偶尔发生,但对耕作操作没有任何影响,可以安全地被忽视。

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain reorg happened from_next_slot=<block> to_next_slot=<block>

    🟠 当两个或多个有效的块在相同区块链高度创建时会出现这种情况。一开始,网络节点可能会对哪个区块添加到链中产生分歧,导致多个临时分叉。 一旦分歧解决,被丢弃的分叉中的区块就变成孤块,链进行重组以便将获胜的分叉中的区块包含到链中。

    这个问题应该可以自行解决。

    Last Confirmed: mainnet-2024-nov-13
    WARN Consensus: sc_proof_of_time::source: Proof of time chain was extended from block import from_next_slot=<block> to_next_slot=<block>

    🟠 此警告消息不会影响您的奖励或节点的操作。 它只是一个显示网络正常运行的日志消息。

    Last Confirmed: mainnet-2024-nov-13

    异常行为

    这些异常行为与具体组件无关。 在本节中,我们将概述常见问题,并提供任何可用的补救措施来解决这些问题。

    No Output and Missing Error Codes

    如果您在Windows中遇到节点不产生输出且不显示任何错误代码的情况 很可能您需要安装最新版本的 Visual C++ Redistributable package

    diff --git a/zh/farming/guides/gpu-plotter/index.html b/zh/farming/guides/gpu-plotter/index.html index c2d63c64fb2..2738790a868 100644 --- a/zh/farming/guides/gpu-plotter/index.html +++ b/zh/farming/guides/gpu-plotter/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/grafana-dashboard/index.html b/zh/farming/guides/grafana-dashboard/index.html index 0388ebf5321..764d2be40e4 100644 --- a/zh/farming/guides/grafana-dashboard/index.html +++ b/zh/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/index.html b/zh/farming/guides/index.html index 4ab87ceb9b6..6ca927cca1d 100644 --- a/zh/farming/guides/index.html +++ b/zh/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/port-config/index.html b/zh/farming/guides/port-config/index.html index f032cef9bd8..9ce783c05bc 100644 --- a/zh/farming/guides/port-config/index.html +++ b/zh/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/verified-farmer/index.html b/zh/farming/guides/verified-farmer/index.html index 0bf544a3df6..8b26e671b35 100644 --- a/zh/farming/guides/verified-farmer/index.html +++ b/zh/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/intro/index.html b/zh/farming/intro/index.html index a43dd025c49..a3f8d05256a 100644 --- a/zh/farming/intro/index.html +++ b/zh/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/space-acres/install/index.html b/zh/farming/space-acres/install/index.html index 8bdbf0058ec..de174917b40 100644 --- a/zh/farming/space-acres/install/index.html +++ b/zh/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/space-acres/translate/index.html b/zh/farming/space-acres/translate/index.html index 8db33e414b9..842335a230c 100644 --- a/zh/farming/space-acres/translate/index.html +++ b/zh/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/timekeeper/index.html b/zh/farming/timekeeper/index.html index 120a838c57d..6e665aff47d 100644 --- a/zh/farming/timekeeper/index.html +++ b/zh/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/index.html b/zh/index.html index 02447c74323..0ec04ad65f1 100644 --- a/zh/index.html +++ b/zh/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/academy/index.html b/zh/learn/academy/index.html index 72296f391fb..135e47b451a 100644 --- a/zh/learn/academy/index.html +++ b/zh/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/intro/index.html b/zh/learn/intro/index.html index 91f64ccfc65..bca6f529052 100644 --- a/zh/learn/intro/index.html +++ b/zh/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/security/index.html b/zh/learn/security/index.html index df2abb5c9c0..901bbf79893 100644 --- a/zh/learn/security/index.html +++ b/zh/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/markdown-page/index.html b/zh/markdown-page/index.html index d2945e14ead..d797ffcb776 100644 --- a/zh/markdown-page/index.html +++ b/zh/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/community/resources/index.html b/zh/participate/community/resources/index.html index 75996c1a902..860c7cfe094 100644 --- a/zh/participate/community/resources/index.html +++ b/zh/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/community/tools/index.html b/zh/participate/community/tools/index.html index d516be76a0e..1d5bd517178 100644 --- a/zh/participate/community/tools/index.html +++ b/zh/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/code-of-conduct/index.html b/zh/participate/contribute/code-of-conduct/index.html index f2e52859f9a..82b68cc40be 100644 --- a/zh/participate/contribute/code-of-conduct/index.html +++ b/zh/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/intro/index.html b/zh/participate/contribute/intro/index.html index 10485d47901..ea36e24641e 100644 --- a/zh/participate/contribute/intro/index.html +++ b/zh/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/translate/index.html b/zh/participate/contribute/translate/index.html index aa2ecfaf833..185a9a05d6a 100644 --- a/zh/participate/contribute/translate/index.html +++ b/zh/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/intro/index.html b/zh/staking/intro/index.html index 281632c5b70..74ad509d6aa 100644 --- a/zh/staking/intro/index.html +++ b/zh/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/operator/deregister/index.html b/zh/staking/operator/deregister/index.html index ee018fa6b8e..c51351dda3a 100644 --- a/zh/staking/operator/deregister/index.html +++ b/zh/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/operator/register/index.html b/zh/staking/operator/register/index.html index bce4da664c4..545ab6b3439 100644 --- a/zh/staking/operator/register/index.html +++ b/zh/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + @@ -21,14 +21,14 @@
    tip

    For running the Operator Node on Linux, proceed directly to the next step.

    Download the Advanced CLI Executables


    - -
    + + +

    Choosing the right domain

    An operator needs to register on a specific domain and create a key pair to participate in bundle production. Stake Wars is using domains with IDs 0 (Nova) and 1 (AutoID). It is possible to register an operator for each domain, but each operator will require running a node.

    diff --git a/zh/staking/operator/tips/index.html b/zh/staking/operator/tips/index.html index f7b2351e507..91e97516024 100644 --- a/zh/staking/operator/tips/index.html +++ b/zh/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/stake/index.html b/zh/staking/stake/index.html index 38e18d732bf..1dd196fc1de 100644 --- a/zh/staking/stake/index.html +++ b/zh/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/wallets/index.html b/zh/wallets/index.html index e4ce688b3d3..2c24057f6cd 100644 --- a/zh/wallets/index.html +++ b/zh/wallets/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/wallets/polkadot/index.html b/zh/wallets/polkadot/index.html index ddc43d255cb..30db525c0f7 100644 --- a/zh/wallets/polkadot/index.html +++ b/zh/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/wallets/subwallet/index.html b/zh/wallets/subwallet/index.html index 0193490d2f8..64a36713dda 100644 --- a/zh/wallets/subwallet/index.html +++ b/zh/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - +