Learn more about the Autonomys Network by visiting our Academy
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,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/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 @@
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:
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-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>
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
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.
You should see something similar in the terminal:
@@ -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
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.
You should see something similar in the terminal:
@@ -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
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
By default, these commands download the executable files to the ~/.local/bin directory.
You can change the directory by modifying the respective string.
Learn more about the Autonomys Network by visiting our Academy
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.
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. 🟢 🟠 🔴
🟢 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
ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index=<piece>
🔴 This indicates that there is not enough space in the cache to store a new piece of data.
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.
Last Confirmed: mainnet-2024-nov-06
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> sector bytes out of <bytes> expected bytes
🟠 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.
🟢 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
ERROR subspace_farmer::farmer_cache: Failed to store piece in cache, there was no space piece_index=<piece>
🔴 This indicates that there is not enough space in the cache to store a new piece of data.
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.
Last Confirmed: mainnet-2024-nov-13
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> sector bytes out of <bytes> expected bytes
🟠 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.
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.
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
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:'