diff --git a/404.html b/404.html index a29ff6d9634..31427e98ef8 100644 --- a/404.html +++ b/404.html @@ -13,8 +13,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

diff --git a/assets/js/0e5f0558.015a28cc.js b/assets/js/0e5f0558.015a28cc.js new file mode 100644 index 00000000000..01a07d1fefd --- /dev/null +++ b/assets/js/0e5f0558.015a28cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4849],{24909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(74848),o=t(28453),r=t(11470),s=t(19365),i=t(21432),l=t(28774),d=t(65648);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-dec-09/subspace-node-windows-x86_64-skylake-mainnet-2024-dec-09.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-dec-09/subspace-node-windows-x86_64-v2-mainnet-2024-dec-09.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-dec-09/subspace-node-macos-aarch64-mainnet-2024-dec-09.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-dec-09/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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-dec-09/subspace-node-ubuntu-x86_64-v2-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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-dec-09/subspace-node-ubuntu-aarch64-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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 (Auto EVM) 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(99377).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(76390).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(73949).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(36468).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 from 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(12226).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(78809).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, Auto EVM 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(72560).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(88919).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(11604).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)}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var a=t(18215);const o={tabItem:"tabItem_Ymn6"};var r=t(74848);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})}},11470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(96540),o=t(18215),r=t(23104),s=t(56347),i=t(205),l=t(57485),d=t(31682),c=t(70679);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(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(74848);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))}},65648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},76390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},11604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},73949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},36468:(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=="},12226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},78809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},72560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},88919:(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"},99377:(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/0e5f0558.a348ae07.js b/assets/js/0e5f0558.a348ae07.js deleted file mode 100644 index a218678105f..00000000000 --- a/assets/js/0e5f0558.a348ae07.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4849],{24909:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>y,contentTitle:()=>b,default:()=>v,frontMatter:()=>m,metadata:()=>f,toc:()=>j});var a=t(74848),o=t(28453),r=t(11470),s=t(19365),i=t(21432),l=t(28774),d=t(65648);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-dec-09/subspace-node-windows-x86_64-skylake-mainnet-2024-dec-09.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-dec-09/subspace-node-windows-x86_64-v2-mainnet-2024-dec-09.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-dec-09/subspace-node-macos-aarch64-mainnet-2024-dec-09.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-dec-09/subspace-node-ubuntu-x86_64-skylake-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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-dec-09/subspace-node-ubuntu-x86_64-v2-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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-dec-09/subspace-node-ubuntu-aarch64-mainnet-2024-dec-09",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"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(99377).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(76390).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(73949).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(36468).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 from 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(12226).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(78809).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(72560).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(88919).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(11604).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)}},19365:(e,n,t)=>{t.d(n,{A:()=>s});t(96540);var a=t(18215);const o={tabItem:"tabItem_Ymn6"};var r=t(74848);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})}},11470:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(96540),o=t(18215),r=t(23104),s=t(56347),i=t(205),l=t(57485),d=t(31682),c=t(70679);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(92303);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(74848);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))}},65648:(e,n,t)=>{t.d(n,{A:()=>a});const a={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"}},76390:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-1-3ada281f73b3d558999e05d08e652e20.png"},11604:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-10-2382fb7080753927285015ae6fc723ec.png"},73949:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-2-8f4b3ae2d7a7cd160765c5356f7348fc.png"},36468:(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=="},12226:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-5-35c625eb8b8bcbcd305917eab4c88c6d.png"},78809:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-6-ce1624bb0366ff4c01403bf4f5a34c37.png"},72560:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/NStaking-7-8a1faa19c9718bea68d8eeeb6ca75012.png"},88919:(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"},99377:(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/1688.a36dbc13.js b/assets/js/1688.a36dbc13.js new file mode 100644 index 00000000000..149bee88089 --- /dev/null +++ b/assets/js/1688.a36dbc13.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1688],{81688:e=>{e.exports=JSON.parse('[{"Name":"wei chen (wei.chen.cg)","Languages":"Chinese Simplified","Translated (Words)":"1504","Target Words":"2309","Approved (Words)":"926","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"896","Joined":"2024-10-08 04:44:08","originalName":"wei.chen.cg","id":16337820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337820/medium/cf504631ac9b0891027ab58b28e8cf71.jpeg","hashKey":"cf523dc09d1b9af83878a5e954591da8215b671a559fa7161abf5771bc205914"},{"Name":"Giorge Abdala (giorgeabdala)","Languages":"Portuguese","Translated (Words)":"1228","Target Words":"1377","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-24 10:41:45","originalName":"giorgeabdala","id":15140308,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15140308/medium/b2595687225584dbc2ca8ddcb4fca965_default.png","hashKey":"969ec702d38bd5c3beb461177d41dddcd60fa0b0efaeb8fbffc7fac138ddf390"},{"Name":"NakoTurk","Languages":"Turkish","Translated (Words)":"739","Target Words":"712","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 05:58:05","originalName":"NakoTurk","id":15438770,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15438770/medium/42cbec12b27742485607c70176f111cb.png","hashKey":"8420c8df6ecbf3df5f5d68edd0315a0f65b792712deed0dfe06aaa10e00a40f5"},{"Name":"Matthias Rust (Luckysprite)","Languages":"German","Translated (Words)":"216","Target Words":"225","Approved (Words)":"216","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"216","Joined":"2024-07-21 02:04:11","originalName":"Luckysprite","id":16481853,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16481853/medium/600cf46f8eb1e2c78f1a61d1720e2707.png","hashKey":"aa3cba62fa0395b1ba04a0ad7e8ccc113c69685e36ec3da12365ba07f83d27e2"},{"Name":"\u83dccc (caixiaoguang110)","Languages":"Chinese Simplified","Translated (Words)":"12","Target Words":"8","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-11 01:50:12","originalName":"caixiaoguang110","id":16672231,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16672231/medium/e1c3eeb04b78c0cbf752824c855f7868.jpeg","hashKey":"d3dedcd89887d774ff4db0c707463c303c00bced675cbf2706b2eda13e59c4cb"},{"Name":"Seryoga_Leshii","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 06:11:56","originalName":"Seryoga_Leshii","id":15971811,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15971811/medium/b0249278d401d83e975717700b9bb97c_default.png","hashKey":"25827931047760c295ce924e682f6ec84c1b3c0d142584b26ce42e213d3b4841"},{"Name":"Scorpio2017","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-20 16:43:28","originalName":"Scorpio2017","id":15974887,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15974887/medium/72302ffbe059e483a9e68286d2c27d4e.jpg","hashKey":"58309e779828e01397748a49ba7bee12e17eb789057c637351ff4fd8d45f73b6"},{"Name":"StrowDeATh","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-20 23:44:36","originalName":"StrowDeATh","id":14942527,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14942527/medium/8a7fe9c38c906fa840b3aa257cf073e8.jpg","hashKey":"21734af256e326baa1d64904abbe4f9548bd13090e9faaa030f6db7575437297"},{"Name":"\u041f\u0451\u0442\u0440 \u041f\u043b\u043e\u0441\u043a\u0438\u0445 (pittpv)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-24 15:53:13","originalName":"pittpv","id":15981007,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15981007/medium/1a00533aa24f92793bc5e82650becb02.png","hashKey":"ded30e170534f5b35de63722bd3421bfde5d2d84b53e419778cca898af1fda0c"},{"Name":"Jim Counter (jim.counter)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 06:02:56","originalName":"jim.counter","id":15987101,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987101/medium/3e91b59975679a3bf4fd2a017944cedf.png","hashKey":"46a26ffeba57247e53552bf536e3f29f3f410f7b2aedfd25fd1bc909b8959090"},{"Name":"tradershort Contact me (tradershort)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 09:56:51","originalName":"tradershort","id":15987401,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987401/medium/9f67a5985eb7eccab5e27bc4a0dd02e4.jpeg","hashKey":"54172b0afaee05a8e73ff243762691f80da22a8a78fb1bc240fcc7f3c3f75153"},{"Name":"\u041a\u0438\u0440\u0438\u043b\u043b \u0422\u0440\u043e\u044f\u043d (PurpleMoney)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-30 18:47:31","originalName":"PurpleMoney","id":15495550,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15495550/medium/efe552d35615936c1c0f624462db1ac7.png","hashKey":"49d51559b3fd8799e78668062248008c786ed9b8a0cc29f619e4726ad41f80bd"},{"Name":"Emil Fattakhov (emil_subspace)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-31 10:36:55","originalName":"emil_subspace","id":15979195,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15979195/medium/93d6bcfbb2a6b3fd2a5735d486d1b3f9.jpeg","hashKey":"340815ee3d824cdcb7f9d491dfec3946b4dfb6d6a3cabfb16518e42b74eb3b85"},{"Name":"KPD","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-07 04:07:32","originalName":"KPD","id":15726675,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15726675/medium/a5e65fd9622b862b7aec1f4ac7b975bb_default.png","hashKey":"9138e6b3809eabcd42eff352026f1d0f7ac224e75cc0a7bd8585941ae2e43fcb"},{"Name":"z W (ooplay)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-13 13:08:12","originalName":"ooplay","id":16008847,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16008847/medium/0c57c51d6c54a8560f99d567fc27c611.jpeg","hashKey":"c664fcb7081dc4e677ef54ee7b1a71332a0a7a3045427277b52fbe3b0d3eecf2"},{"Name":"Emil F (Emilios)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-09 13:49:08","originalName":"Emilios","id":15396634,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15396634/medium/f670f74b21acf4522325bb271b212b83.jpg","hashKey":"722800bda5080768582a9e2f1e7e03ca4158cecfc33b39fc247f1d41a297ca98"},{"Name":"megamozg","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-13 12:33:28","originalName":"megamozg","id":16052146,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16052146/medium/5825d4cf8f7c4e40e0b91337ec41511d.jpg","hashKey":"6a58a13c15407e7eb8e24d95242148aba2f14f4f78892465ea0fdea1c5e401f2"},{"Name":"Tech Web3 (web3crypto)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-14 07:32:41","originalName":"web3crypto","id":16053210,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16053210/medium/747d6db2a69ccf1a4b6990e548ce0879.png","hashKey":"d8df32f8396ed231827b58c2da47f1c900f59fec98bf152bc45f42bddbdc128c"},{"Name":"Fan MOZG (kievmozg)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-27 13:39:14","originalName":"kievmozg","id":16074676,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16074676/medium/fb36ff367bc6af6d8a9b32a7393d02b3.png","hashKey":"7c4686044b716bb883c2e51f6967a0607021a40a7d2a0bd5af625a974a8d79b5"},{"Name":"Wedding Eknopka (cryptan)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-30 14:41:01","originalName":"cryptan","id":16079614,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16079614/medium/7efbf58e91149c399d561e610e24d1fc.png","hashKey":"2a7693598f6e181b5aa8079d46d20c61c005bccef7faa182730a94ff5be4580f"},{"Name":"Nirnaeth (nirnaeth-arnoediad)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-06 05:38:35","originalName":"nirnaeth-arnoediad","id":15386992,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386992/medium/c451aabc75b1681b3d948de3499e7794.png","hashKey":"c038aaf1b82676e49d0e1e87374c2b1bc3000ba863c9b0f410a4d425411be2a1"},{"Name":"Yurii Bukshuk (Yurally)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-13 11:59:11","originalName":"Yurally","id":15386666,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386666/medium/c21c82ad1697a0923faa0ab6ca255281.JPG","hashKey":"491365ea399c34c45ac4c7f41be2bbd637100f36f77f03833e475c2fbb5d6619"},{"Name":"Dima Zadorozhny (Dmitryzd)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-15 12:32:48","originalName":"Dmitryzd","id":16104582,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16104582/medium/9f1092113c662170dcf0517f4857632f.jpeg","hashKey":"71b6acdce2552558ef15716b133020ad4b4a8c4fe8373898f496ceca4e4fc401"},{"Name":"Farzad Karimnejad (Shassi)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-25 14:34:10","originalName":"Shassi","id":16118658,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16118658/medium/aeb628c22bc6f299996e5260d6e20cbc.jpeg","hashKey":"43b06981e2d5d63a24e7e3494a35b388fc4cbf9e8128f7636462acbb26c1e39d"},{"Name":"Zulkis","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-08 10:54:56","originalName":"Zulkis","id":16135670,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16135670/medium/03a309565947a1aca6f4e134e61c3617.png","hashKey":"25dedda94216dd93b93fa5beb19c774f7dfe49b49aa87e216ff4ff5a3e99b184"},{"Name":"Captainclogs","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-14 00:29:22","originalName":"Captainclogs","id":16142762,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16142762/medium/c156acc967bef46d9a624b54405825e0.jpg","hashKey":"a9b581a474fb0caa90c2a5546274082196813299991d91bf3f2936919e510747"},{"Name":"77 (geceli922)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-02-09 17:28:17","originalName":"geceli922","id":16227314,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16227314/medium/b9457025a042950c1e28307f6c00cf16.png","hashKey":"e8b43adb0e4ee7b08037be2ba356f688ff159c116fb7fb41e2461ff64c82ef80"},{"Name":"moke33","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-03-31 22:27:09","originalName":"moke33","id":16305788,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16305788/medium/60493ca31a2468213fb641aa9b3b9632_default.png","hashKey":"91f9222b1f8c78e1fbd84a47f0d0abf154ff5bcb1034fc1dd8c1378129078876"},{"Name":"oaigoodman","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-16 06:26:11","originalName":"oaigoodman","id":16329256,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16329256/medium/dfb55ff7711309c0240c39ac792580b0.png","hashKey":"80189face3ff5a1bedbf14b32e6c0c499bee5518d096bb8c783d93d0a0d6f453"},{"Name":"Hendot (hendot13)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-19 10:42:38","originalName":"hendot13","id":14937375,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14937375/medium/5b0f4f71323332d248d0dd7acc34aff2_default.png","hashKey":"6a3a0492dcd81daee7bb7ca47c2591dbab0771e3005ed27f0da742510ce97467"},{"Name":"Y L (Fatman13)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-25 22:28:30","originalName":"Fatman13","id":16337966,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337966/medium/a57d1b69173c1adb141f441fb46f5fea.jpeg","hashKey":"aeae02909ea5dc7902fa6419174691821ab725aa8ccb7d573cd4d84d1014f14e"},{"Name":"DarienRahl","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-29 22:40:56","originalName":"DarienRahl","id":16325736,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16325736/medium/04198c97b88144b1510a6fcafe43fbaf.jpeg","hashKey":"e7acbe0101d867d4a642166c28adbfb7540a270f88319063f6cc58b0ca700da2"},{"Name":"soberyu333","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-06 06:21:07","originalName":"soberyu333","id":16358576,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16358576/medium/eddfeed3ccd3b6d62c792577734325c6.png","hashKey":"eed4a118093afee8a1c7d83d3e4f67f7f66c774665bda93077298d0343b0e4fe"},{"Name":"BlueDog","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-07 18:36:26","originalName":"BlueDog","id":16361068,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16361068/medium/f3ee84d16fb71ebab5d52910db333ab0.jpeg","hashKey":"fca800e4917a402b1ad93b5054ca05589399cdcf167ac8f00242528769e11947"},{"Name":"SolanaLeeky","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-24 10:31:36","originalName":"SolanaLeeky","id":16386360,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16386360/medium/dd65f03412b22c3c04ec7b62b935d052_default.png","hashKey":"cc81c11886f0d07dde9426401217c6b6edf09a5e04246ff125c99b3917ac3da8"},{"Name":"\u0410\u043d\u043d\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u0430 (anutakisa1986)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-12 15:06:57","originalName":"anutakisa1986","id":15385820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15385820/medium/f5ed014a13ca9cc17d16293341cbbbb5.png","hashKey":"2c526e1019cde76f63fb4cafed6cd221edbcba7eda20e27c594d53b71b31ab9f"},{"Name":"Alex IT-PROF (alex.it.prof)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 13:24:48","originalName":"alex.it.prof","id":16112482,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16112482/medium/7131e7d0cca8b5ff3dad62aa44d4ff17.png","hashKey":"461d63d7d2e740b72a09b8bf7a7a32bfced5c6183527da67212eb867fda214ac"},{"Name":"bingbang (bingbank)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 15:19:20","originalName":"bingbank","id":16480389,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16480389/medium/f7ad6ee1cf7826308121aed83ffa410e.jpeg","hashKey":"fb659f826097a377d8b37a73e401bd8e7ee0241d2b2e2568173256dbd22458f5"},{"Name":"Chainguys\ud83d\udd13#6306 (Chainguys)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-23 05:10:42","originalName":"Chainguys","id":15224042,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15224042/medium/011fd78005550eddac51f6cfc3fe7e1f.png","hashKey":"ce77198d1687f53373b6f880d04fe34ee9bc75c09881d6f5a6af9a7e1ff77f93"},{"Name":"TimeDao","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-08-09 03:49:30","originalName":"TimeDao","id":16519049,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16519049/medium/60f14985b2bdb418e7ce738e487d9a57_default.png","hashKey":"73bc246d46635277fbd9da45b82e4f788e4c76e33e9042e159e99288c2e34ac5"},{"Name":"Mystery men#1921 (Mystery_men)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-09-30 22:36:20","originalName":"Mystery_men","id":15388574,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15388574/medium/0a06dcbc726145f3748cc73dac3445a3.jpg","hashKey":"9fbe3c5744836f498982f92758a4c2be19cf5d9a4ab6fc6061e2afd23d7e612c"},{"Name":"ratatuj","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-02 14:40:31","originalName":"ratatuj","id":16607033,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16607033/medium/6b25fea2d35384f5a15691fb60a9debd_default.png","hashKey":"1704872ae70e6eae8002aadbc8eec45014d394393bfffa7aa04c074950ebb0ae"},{"Name":"Andr\xe9 Lopes (frammeDeveloper)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-04 21:20:00","originalName":"frammeDeveloper","id":16610749,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16610749/medium/e3586645259b084a86b5076e75295722.png","hashKey":"5e2a584970183bbd3fe265108c9b2012db445eedc6bd7bb464766ad6c89448cc"},{"Name":"Wei Chen (dayou5168)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-08 04:14:14","originalName":"dayou5168","id":16602857,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16602857/medium/22b9223ad812291b840b2be3005c8e1f.jpeg","hashKey":"87957964bb47724b4d72e65e06400204acb60ed8b530257cded53708469582dc"},{"Name":"Shuyong Yang (shuyong.yang)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-11 21:01:41","originalName":"shuyong.yang","id":16612105,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16612105/medium/c09fdff2006a5265e62264af6289445a.png","hashKey":"1d4c0bc5f047f6a2b6274abec475fd14dc1cb7bf303e228a1e35e940ada91187"},{"Name":"Shushu (degenshushu)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-12 23:26:29","originalName":"degenshushu","id":16624347,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624347/medium/84d14c33d8d0dccfca727a548bd52f8d.png","hashKey":"0a42b5746d853a0a654fe7e1b59fa0a7bc2dc5a01b70193abd695a30033a8020"},{"Name":"Baran \xc7evik (callmebaraan)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-13 06:56:54","originalName":"callmebaraan","id":16624679,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624679/medium/486db993f1e3f8fb005ef747c0bcccde.png","hashKey":"5f4acc8e847d98e21095704aeb13fa9b56309818f6a499751a67e2cec0d9caae"},{"Name":"deJetStream (dejetstream)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 10:33:52","originalName":"dejetstream","id":16626611,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626611/medium/3ea5a8fe5e0fc47eba7e8f194e87ebd8.png","hashKey":"feee1fc6cdf10ab9b7863c392e029ad6f500ce2c3720b5ca51139948247907dc"},{"Name":"beyraandrade","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 17:44:10","originalName":"beyraandrade","id":16626689,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626689/medium/365a57e8ae1753b8b5986dcc8c7de156_default.png","hashKey":"5ef6b1722e8982310f5a000c3db6dac5071137525088ef706163bc8861303de6"},{"Name":"Littlebutts","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-04 19:49:41","originalName":"Littlebutts","id":16660463,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16660463/medium/ed959b9542997ff6fca4fca681c9b5e6_default.png","hashKey":"13929834d5fe4909330da19a45c0a2640aa0e29105212a25191d226ab57886ec"},{"Name":"DragonChris","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-06 00:44:12","originalName":"DragonChris","id":16662325,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16662325/medium/e2f471c82e122e875b509de0c4fcfb8a_default.png","hashKey":"19c002ff588293f145194afd7679c7175209db467772816124ab00fe85fb83b5"},{"Name":"REMOVED_USER","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-12 15:15:34"}]')}}]); \ No newline at end of file diff --git a/assets/js/1688.d087f04d.js b/assets/js/1688.d087f04d.js deleted file mode 100644 index 2a55f15e58f..00000000000 --- a/assets/js/1688.d087f04d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1688],{81688:e=>{e.exports=JSON.parse('[{"Name":"wei chen (wei.chen.cg)","Languages":"Chinese Simplified","Translated (Words)":"1380","Target Words":"2140","Approved (Words)":"926","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"896","Joined":"2024-10-08 04:44:08","originalName":"wei.chen.cg","id":16337820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337820/medium/cf504631ac9b0891027ab58b28e8cf71.jpeg","hashKey":"cf523dc09d1b9af83878a5e954591da8215b671a559fa7161abf5771bc205914"},{"Name":"Giorge Abdala (giorgeabdala)","Languages":"Portuguese","Translated (Words)":"1228","Target Words":"1377","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-24 10:41:45","originalName":"giorgeabdala","id":15140308,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15140308/medium/b2595687225584dbc2ca8ddcb4fca965_default.png","hashKey":"969ec702d38bd5c3beb461177d41dddcd60fa0b0efaeb8fbffc7fac138ddf390"},{"Name":"NakoTurk","Languages":"Turkish","Translated (Words)":"739","Target Words":"712","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 05:58:05","originalName":"NakoTurk","id":15438770,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15438770/medium/42cbec12b27742485607c70176f111cb.png","hashKey":"8420c8df6ecbf3df5f5d68edd0315a0f65b792712deed0dfe06aaa10e00a40f5"},{"Name":"\u83dccc (caixiaoguang110)","Languages":"Chinese Simplified","Translated (Words)":"12","Target Words":"8","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-11 01:50:12","originalName":"caixiaoguang110","id":16672231,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16672231/medium/e1c3eeb04b78c0cbf752824c855f7868.jpeg","hashKey":"d3dedcd89887d774ff4db0c707463c303c00bced675cbf2706b2eda13e59c4cb"},{"Name":"Seryoga_Leshii","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 06:11:56","originalName":"Seryoga_Leshii","id":15971811,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15971811/medium/b0249278d401d83e975717700b9bb97c_default.png","hashKey":"25827931047760c295ce924e682f6ec84c1b3c0d142584b26ce42e213d3b4841"},{"Name":"Scorpio2017","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-20 16:43:28","originalName":"Scorpio2017","id":15974887,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15974887/medium/72302ffbe059e483a9e68286d2c27d4e.jpg","hashKey":"58309e779828e01397748a49ba7bee12e17eb789057c637351ff4fd8d45f73b6"},{"Name":"StrowDeATh","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-20 23:44:36","originalName":"StrowDeATh","id":14942527,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14942527/medium/8a7fe9c38c906fa840b3aa257cf073e8.jpg","hashKey":"21734af256e326baa1d64904abbe4f9548bd13090e9faaa030f6db7575437297"},{"Name":"\u041f\u0451\u0442\u0440 \u041f\u043b\u043e\u0441\u043a\u0438\u0445 (pittpv)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-24 15:53:13","originalName":"pittpv","id":15981007,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15981007/medium/1a00533aa24f92793bc5e82650becb02.png","hashKey":"ded30e170534f5b35de63722bd3421bfde5d2d84b53e419778cca898af1fda0c"},{"Name":"Jim Counter (jim.counter)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 06:02:56","originalName":"jim.counter","id":15987101,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987101/medium/3e91b59975679a3bf4fd2a017944cedf.png","hashKey":"46a26ffeba57247e53552bf536e3f29f3f410f7b2aedfd25fd1bc909b8959090"},{"Name":"tradershort Contact me (tradershort)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 09:56:51","originalName":"tradershort","id":15987401,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987401/medium/9f67a5985eb7eccab5e27bc4a0dd02e4.jpeg","hashKey":"54172b0afaee05a8e73ff243762691f80da22a8a78fb1bc240fcc7f3c3f75153"},{"Name":"\u041a\u0438\u0440\u0438\u043b\u043b \u0422\u0440\u043e\u044f\u043d (PurpleMoney)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-30 18:47:31","originalName":"PurpleMoney","id":15495550,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15495550/medium/efe552d35615936c1c0f624462db1ac7.png","hashKey":"49d51559b3fd8799e78668062248008c786ed9b8a0cc29f619e4726ad41f80bd"},{"Name":"Emil Fattakhov (emil_subspace)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-31 10:36:55","originalName":"emil_subspace","id":15979195,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15979195/medium/93d6bcfbb2a6b3fd2a5735d486d1b3f9.jpeg","hashKey":"340815ee3d824cdcb7f9d491dfec3946b4dfb6d6a3cabfb16518e42b74eb3b85"},{"Name":"KPD","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-07 04:07:32","originalName":"KPD","id":15726675,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15726675/medium/a5e65fd9622b862b7aec1f4ac7b975bb_default.png","hashKey":"9138e6b3809eabcd42eff352026f1d0f7ac224e75cc0a7bd8585941ae2e43fcb"},{"Name":"z W (ooplay)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-13 13:08:12","originalName":"ooplay","id":16008847,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16008847/medium/0c57c51d6c54a8560f99d567fc27c611.jpeg","hashKey":"c664fcb7081dc4e677ef54ee7b1a71332a0a7a3045427277b52fbe3b0d3eecf2"},{"Name":"Emil F (Emilios)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-09 13:49:08","originalName":"Emilios","id":15396634,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15396634/medium/f670f74b21acf4522325bb271b212b83.jpg","hashKey":"722800bda5080768582a9e2f1e7e03ca4158cecfc33b39fc247f1d41a297ca98"},{"Name":"megamozg","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-13 12:33:28","originalName":"megamozg","id":16052146,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16052146/medium/5825d4cf8f7c4e40e0b91337ec41511d.jpg","hashKey":"6a58a13c15407e7eb8e24d95242148aba2f14f4f78892465ea0fdea1c5e401f2"},{"Name":"Tech Web3 (web3crypto)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-14 07:32:41","originalName":"web3crypto","id":16053210,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16053210/medium/747d6db2a69ccf1a4b6990e548ce0879.png","hashKey":"d8df32f8396ed231827b58c2da47f1c900f59fec98bf152bc45f42bddbdc128c"},{"Name":"Fan MOZG (kievmozg)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-27 13:39:14","originalName":"kievmozg","id":16074676,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16074676/medium/fb36ff367bc6af6d8a9b32a7393d02b3.png","hashKey":"7c4686044b716bb883c2e51f6967a0607021a40a7d2a0bd5af625a974a8d79b5"},{"Name":"Wedding Eknopka (cryptan)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-30 14:41:01","originalName":"cryptan","id":16079614,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16079614/medium/7efbf58e91149c399d561e610e24d1fc.png","hashKey":"2a7693598f6e181b5aa8079d46d20c61c005bccef7faa182730a94ff5be4580f"},{"Name":"Nirnaeth (nirnaeth-arnoediad)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-06 05:38:35","originalName":"nirnaeth-arnoediad","id":15386992,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386992/medium/c451aabc75b1681b3d948de3499e7794.png","hashKey":"c038aaf1b82676e49d0e1e87374c2b1bc3000ba863c9b0f410a4d425411be2a1"},{"Name":"Yurii Bukshuk (Yurally)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-13 11:59:11","originalName":"Yurally","id":15386666,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386666/medium/c21c82ad1697a0923faa0ab6ca255281.JPG","hashKey":"491365ea399c34c45ac4c7f41be2bbd637100f36f77f03833e475c2fbb5d6619"},{"Name":"Dima Zadorozhny (Dmitryzd)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-15 12:32:48","originalName":"Dmitryzd","id":16104582,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16104582/medium/9f1092113c662170dcf0517f4857632f.jpeg","hashKey":"71b6acdce2552558ef15716b133020ad4b4a8c4fe8373898f496ceca4e4fc401"},{"Name":"Farzad Karimnejad (Shassi)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-25 14:34:10","originalName":"Shassi","id":16118658,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16118658/medium/aeb628c22bc6f299996e5260d6e20cbc.jpeg","hashKey":"43b06981e2d5d63a24e7e3494a35b388fc4cbf9e8128f7636462acbb26c1e39d"},{"Name":"Zulkis","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-08 10:54:56","originalName":"Zulkis","id":16135670,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16135670/medium/03a309565947a1aca6f4e134e61c3617.png","hashKey":"25dedda94216dd93b93fa5beb19c774f7dfe49b49aa87e216ff4ff5a3e99b184"},{"Name":"Captainclogs","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-14 00:29:22","originalName":"Captainclogs","id":16142762,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16142762/medium/c156acc967bef46d9a624b54405825e0.jpg","hashKey":"a9b581a474fb0caa90c2a5546274082196813299991d91bf3f2936919e510747"},{"Name":"77 (geceli922)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-02-09 17:28:17","originalName":"geceli922","id":16227314,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16227314/medium/b9457025a042950c1e28307f6c00cf16.png","hashKey":"e8b43adb0e4ee7b08037be2ba356f688ff159c116fb7fb41e2461ff64c82ef80"},{"Name":"moke33","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-03-31 22:27:09","originalName":"moke33","id":16305788,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16305788/medium/60493ca31a2468213fb641aa9b3b9632_default.png","hashKey":"91f9222b1f8c78e1fbd84a47f0d0abf154ff5bcb1034fc1dd8c1378129078876"},{"Name":"oaigoodman","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-16 06:26:11","originalName":"oaigoodman","id":16329256,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16329256/medium/dfb55ff7711309c0240c39ac792580b0.png","hashKey":"80189face3ff5a1bedbf14b32e6c0c499bee5518d096bb8c783d93d0a0d6f453"},{"Name":"Hendot (hendot13)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-19 10:42:38","originalName":"hendot13","id":14937375,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14937375/medium/5b0f4f71323332d248d0dd7acc34aff2_default.png","hashKey":"6a3a0492dcd81daee7bb7ca47c2591dbab0771e3005ed27f0da742510ce97467"},{"Name":"Y L (Fatman13)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-25 22:28:30","originalName":"Fatman13","id":16337966,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337966/medium/a57d1b69173c1adb141f441fb46f5fea.jpeg","hashKey":"aeae02909ea5dc7902fa6419174691821ab725aa8ccb7d573cd4d84d1014f14e"},{"Name":"DarienRahl","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-29 22:40:56","originalName":"DarienRahl","id":16325736,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16325736/medium/04198c97b88144b1510a6fcafe43fbaf.jpeg","hashKey":"e7acbe0101d867d4a642166c28adbfb7540a270f88319063f6cc58b0ca700da2"},{"Name":"soberyu333","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-06 06:21:07","originalName":"soberyu333","id":16358576,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16358576/medium/eddfeed3ccd3b6d62c792577734325c6.png","hashKey":"eed4a118093afee8a1c7d83d3e4f67f7f66c774665bda93077298d0343b0e4fe"},{"Name":"BlueDog","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-07 18:36:26","originalName":"BlueDog","id":16361068,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16361068/medium/f3ee84d16fb71ebab5d52910db333ab0.jpeg","hashKey":"fca800e4917a402b1ad93b5054ca05589399cdcf167ac8f00242528769e11947"},{"Name":"SolanaLeeky","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-24 10:31:36","originalName":"SolanaLeeky","id":16386360,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16386360/medium/dd65f03412b22c3c04ec7b62b935d052_default.png","hashKey":"cc81c11886f0d07dde9426401217c6b6edf09a5e04246ff125c99b3917ac3da8"},{"Name":"\u0410\u043d\u043d\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u0430 (anutakisa1986)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-12 15:06:57","originalName":"anutakisa1986","id":15385820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15385820/medium/f5ed014a13ca9cc17d16293341cbbbb5.png","hashKey":"2c526e1019cde76f63fb4cafed6cd221edbcba7eda20e27c594d53b71b31ab9f"},{"Name":"Matthias Rust (Luckysprite)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-21 02:04:11","originalName":"Luckysprite","id":16481853,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16481853/medium/600cf46f8eb1e2c78f1a61d1720e2707.png","hashKey":"aa3cba62fa0395b1ba04a0ad7e8ccc113c69685e36ec3da12365ba07f83d27e2"},{"Name":"Alex IT-PROF (alex.it.prof)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 13:24:48","originalName":"alex.it.prof","id":16112482,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16112482/medium/7131e7d0cca8b5ff3dad62aa44d4ff17.png","hashKey":"461d63d7d2e740b72a09b8bf7a7a32bfced5c6183527da67212eb867fda214ac"},{"Name":"bingbang (bingbank)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 15:19:20","originalName":"bingbank","id":16480389,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16480389/medium/f7ad6ee1cf7826308121aed83ffa410e.jpeg","hashKey":"fb659f826097a377d8b37a73e401bd8e7ee0241d2b2e2568173256dbd22458f5"},{"Name":"Chainguys\ud83d\udd13#6306 (Chainguys)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-23 05:10:42","originalName":"Chainguys","id":15224042,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15224042/medium/011fd78005550eddac51f6cfc3fe7e1f.png","hashKey":"ce77198d1687f53373b6f880d04fe34ee9bc75c09881d6f5a6af9a7e1ff77f93"},{"Name":"TimeDao","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-08-09 03:49:30","originalName":"TimeDao","id":16519049,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16519049/medium/60f14985b2bdb418e7ce738e487d9a57_default.png","hashKey":"73bc246d46635277fbd9da45b82e4f788e4c76e33e9042e159e99288c2e34ac5"},{"Name":"Mystery men#1921 (Mystery_men)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-09-30 22:36:20","originalName":"Mystery_men","id":15388574,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15388574/medium/0a06dcbc726145f3748cc73dac3445a3.jpg","hashKey":"9fbe3c5744836f498982f92758a4c2be19cf5d9a4ab6fc6061e2afd23d7e612c"},{"Name":"ratatuj","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-02 14:40:31","originalName":"ratatuj","id":16607033,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16607033/medium/6b25fea2d35384f5a15691fb60a9debd_default.png","hashKey":"1704872ae70e6eae8002aadbc8eec45014d394393bfffa7aa04c074950ebb0ae"},{"Name":"Andr\xe9 Lopes (frammeDeveloper)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-04 21:20:00","originalName":"frammeDeveloper","id":16610749,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16610749/medium/e3586645259b084a86b5076e75295722.png","hashKey":"5e2a584970183bbd3fe265108c9b2012db445eedc6bd7bb464766ad6c89448cc"},{"Name":"Wei Chen (dayou5168)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-08 04:14:14","originalName":"dayou5168","id":16602857,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16602857/medium/22b9223ad812291b840b2be3005c8e1f.jpeg","hashKey":"87957964bb47724b4d72e65e06400204acb60ed8b530257cded53708469582dc"},{"Name":"Shuyong Yang (shuyong.yang)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-11 21:01:41","originalName":"shuyong.yang","id":16612105,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16612105/medium/c09fdff2006a5265e62264af6289445a.png","hashKey":"1d4c0bc5f047f6a2b6274abec475fd14dc1cb7bf303e228a1e35e940ada91187"},{"Name":"Shushu (degenshushu)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-12 23:26:29","originalName":"degenshushu","id":16624347,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624347/medium/84d14c33d8d0dccfca727a548bd52f8d.png","hashKey":"0a42b5746d853a0a654fe7e1b59fa0a7bc2dc5a01b70193abd695a30033a8020"},{"Name":"Baran \xc7evik (callmebaraan)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-13 06:56:54","originalName":"callmebaraan","id":16624679,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624679/medium/486db993f1e3f8fb005ef747c0bcccde.png","hashKey":"5f4acc8e847d98e21095704aeb13fa9b56309818f6a499751a67e2cec0d9caae"},{"Name":"deJetStream (dejetstream)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 10:33:52","originalName":"dejetstream","id":16626611,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626611/medium/3ea5a8fe5e0fc47eba7e8f194e87ebd8.png","hashKey":"feee1fc6cdf10ab9b7863c392e029ad6f500ce2c3720b5ca51139948247907dc"},{"Name":"beyraandrade","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 17:44:10","originalName":"beyraandrade","id":16626689,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626689/medium/365a57e8ae1753b8b5986dcc8c7de156_default.png","hashKey":"5ef6b1722e8982310f5a000c3db6dac5071137525088ef706163bc8861303de6"},{"Name":"Littlebutts","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-04 19:49:41","originalName":"Littlebutts","id":16660463,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16660463/medium/ed959b9542997ff6fca4fca681c9b5e6_default.png","hashKey":"13929834d5fe4909330da19a45c0a2640aa0e29105212a25191d226ab57886ec"},{"Name":"DragonChris","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-06 00:44:12","originalName":"DragonChris","id":16662325,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16662325/medium/e2f471c82e122e875b509de0c4fcfb8a_default.png","hashKey":"19c002ff588293f145194afd7679c7175209db467772816124ab00fe85fb83b5"},{"Name":"REMOVED_USER","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-12 15:15:34"}]')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.5cb7f6dc.js b/assets/js/22dd74f7.5cb7f6dc.js new file mode 100644 index 00000000000..2a0e102c282 --- /dev/null +++ b/assets/js/22dd74f7.5cb7f6dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1567],{55226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Learn","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/learn/intro","docId":"learn/intro","unlisted":false},{"type":"link","label":"Safety and Security","href":"/learn/security","docId":"learn/security","unlisted":false},{"type":"link","label":"Autonomys Academy","href":"/learn/academy","docId":"learn/academy","unlisted":false}]},{"type":"category","label":"Farming & Staking","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"Wallets","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"\u2728 SubWallet","href":"/wallets/subwallet","docId":"farming-&-staking/wallets/subwallet","unlisted":false},{"type":"link","label":"polkadot{.js} extension","href":"/wallets/polkadot","docId":"farming-&-staking/wallets/polkadot","unlisted":false}],"href":"/wallets"},{"type":"category","label":"Farming","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Getting Started","href":"/farming/intro","docId":"farming-&-staking/farming/intro","unlisted":false},{"type":"category","label":"\u2728 Space Acres","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Install","href":"/farming/space-acres/install","docId":"farming-&-staking/farming/space-acres/install","unlisted":false},{"type":"link","label":"Translation Guide","href":"/farming/space-acres/translate","docId":"farming-&-staking/farming/space-acres/translate_space_acres","unlisted":false}]},{"type":"category","label":"Advanced CLI","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Install","href":"/farming/advanced-cli/install","docId":"farming-&-staking/farming/advanced-cli/cli-install","unlisted":false},{"type":"link","label":"Farming Cluster","href":"/farming/advanced-cli/cluster","docId":"farming-&-staking/farming/advanced-cli/cli-farming-cluster","unlisted":false},{"type":"link","label":"Tips & Tricks","href":"/farming/advanced-cli/tips","docId":"farming-&-staking/farming/advanced-cli/cli-tips","unlisted":false},{"type":"link","label":"Taurus Network","href":"/farming/advanced-cli/taurus","docId":"farming-&-staking/farming/advanced-cli/taurus-network","unlisted":false}]},{"type":"link","label":"Common Problems","href":"/farming/common-problems","docId":"farming-&-staking/farming/common-problems","unlisted":false},{"type":"category","label":"Additional Guides","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"GPU Plotter","href":"/farming/guides/gpu-plotter","docId":"farming-&-staking/farming/additional-guides/gpu-plotter","unlisted":false},{"type":"link","label":"Port Forwarding & Firewall","href":"/farming/guides/port-config","docId":"farming-&-staking/farming/additional-guides/port-config","unlisted":false},{"type":"link","label":"Grafana Dashboard","href":"/farming/guides/grafana-dashboard","docId":"farming-&-staking/farming/additional-guides/grafana-dashboard","unlisted":false},{"type":"link","label":"Verified Farmer Discord Role","href":"/farming/guides/verified-farmer","docId":"farming-&-staking/farming/additional-guides/verify-farmer","unlisted":false}],"href":"/farming/guides"}],"href":"/category/farming"},{"type":"category","label":" \u264a Operators & Nominators","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/staking/intro","docId":"farming-&-staking/staking/intro","unlisted":false},{"type":"category","label":"Operators Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Register an Operator","href":"/staking/operator/register","docId":"farming-&-staking/staking/operators/register-operator","unlisted":false},{"type":"link","label":"Deregister an Operator","href":"/staking/operator/deregister","docId":"farming-&-staking/staking/operators/deregister-operator","unlisted":false},{"type":"link","label":"Operator Tips & Tricks","href":"/staking/operator/tips","docId":"farming-&-staking/staking/operators/tips-operator","unlisted":false}]},{"type":"link","label":"Staking guide","href":"/staking/stake","docId":"farming-&-staking/staking/staking","unlisted":false}]},{"type":"link","label":"Timekeeping","href":"/farming/timekeeper","docId":"farming-&-staking/timekeeping","unlisted":false}]},{"type":"category","label":"Develop","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/develop/intro","docId":"develop/intro","unlisted":false},{"type":"category","label":"Auto SDK","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/develop/auto-sdk/intro","docId":"develop/auto_sdk/intro","unlisted":false},{"type":"link","label":"Consensus","href":"/develop/auto-sdk/consensus","docId":"develop/auto_sdk/auto-consensus","unlisted":false},{"type":"link","label":"Auto ID","href":"/develop/auto-sdk/auto-id","docId":"develop/auto_sdk/auto-id","unlisted":false},{"type":"link","label":"XDM","href":"/develop/auto-sdk/xdm","docId":"develop/auto_sdk/auto-xdm","unlisted":false},{"type":"link","label":"Utils","href":"/develop/auto-sdk/utils","docId":"develop/auto_sdk/auto-utils","unlisted":false},{"type":"link","label":"Drive","href":"/develop/auto-sdk/drive","docId":"develop/auto_sdk/auto-drive","unlisted":false}],"href":"/develop/auto-sdk"},{"type":"category","label":"\u264a Auto EVM","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/develop/auto-evm/introduction","docId":"develop/nova/intro","unlisted":false},{"type":"link","label":"General Information","href":"/develop/auto-evm/general","docId":"develop/nova/general-information","unlisted":false},{"type":"link","label":"Setting up MetaMask","href":"/develop/auto-evm/metamask","docId":"develop/nova/setting-up-metamask","unlisted":false},{"type":"category","label":"Additional Guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Foundry","href":"/develop/auto-evm/guides/foundry","docId":"develop/nova/additional-guides/foundry_guide","unlisted":false},{"type":"link","label":"Hardhat","href":"/develop/auto-evm/guides/hardhat","docId":"develop/nova/additional-guides/hardhat_guide","unlisted":false},{"type":"link","label":"Local Development","href":"/develop/auto-evm/guides/local-development","docId":"develop/nova/additional-guides/local_development","unlisted":false},{"type":"link","label":"Remix IDE","href":"/develop/auto-evm/guides/remix","docId":"develop/nova/additional-guides/remix_guide","unlisted":false}]},{"type":"category","label":"Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Autonomys Faucet","href":"/develop/auto-evm/faucet","docId":"develop/nova/Resources/faucet","unlisted":false},{"type":"link","label":"Auto EVM Block Explorer","href":"/develop/auto-evm/block-explorer","docId":"develop/nova/Resources/block_explorer","unlisted":false}]}],"href":"/develop/auto-evm"}]},{"type":"category","label":"Participate","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Contribute","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Getting started","href":"/participate/contribute/intro","docId":"participate/contribute/intro","unlisted":false},{"type":"link","label":"Code of Conduct","href":"/participate/contribute/code-of-conduct","docId":"participate/contribute/code-of-conduct","unlisted":false},{"type":"link","label":"Docs Translation","href":"/participate/contribute/translate","docId":"participate/contribute/translate","unlisted":false}]},{"type":"category","label":"Community","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Community Contributions","href":"/participate/community/contributions","docId":"participate/community/contributions","unlisted":false}]}]}]},"docs":{"develop/auto_sdk/auto-consensus":{"id":"develop/auto_sdk/auto-consensus","title":"Consensus","description":"Functions to interact with the consensus chain","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-drive":{"id":"develop/auto_sdk/auto-drive","title":"Drive","description":"Utilities for creating and managing IPLD DAGs","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-id":{"id":"develop/auto_sdk/auto-id","title":"Auto ID","description":"Functions to build on Auto ID domain","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-utils":{"id":"develop/auto_sdk/auto-utils","title":"Utils","description":"Utility functions for the Auto SDK","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-xdm":{"id":"develop/auto_sdk/auto-xdm","title":"XDM","description":"Functions to utilize Auto XDM (Cross-Domain Messaging)","sidebar":"tutorialSidebar"},"develop/auto_sdk/intro":{"id":"develop/auto_sdk/intro","title":"Introduction","description":"Start Building using Auto SDK","sidebar":"tutorialSidebar"},"develop/intro":{"id":"develop/intro","title":"Getting Started","description":"A Getting Started guide for the Autonomys Network","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/foundry_guide":{"id":"develop/nova/additional-guides/foundry_guide","title":"Foundry","description":"Testing and Deploying Smart Contracts using Foundry","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/hardhat_guide":{"id":"develop/nova/additional-guides/hardhat_guide","title":"Hardhat","description":"Testing and Deploying Smart Contracts using HardHat","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/local_development":{"id":"develop/nova/additional-guides/local_development","title":"Local Development","description":"Guide on local development Autonomys Node and Farmer","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/remix_guide":{"id":"develop/nova/additional-guides/remix_guide","title":"Remix IDE","description":"Testing and Deploying Smart Contracts using Remix IDE","sidebar":"tutorialSidebar"},"develop/nova/general-information":{"id":"develop/nova/general-information","title":"General Information","description":"Guide on setting up","sidebar":"tutorialSidebar"},"develop/nova/intro":{"id":"develop/nova/intro","title":"Introduction","description":"Quick start one-pager","sidebar":"tutorialSidebar"},"develop/nova/Resources/block_explorer":{"id":"develop/nova/Resources/block_explorer","title":"Auto EVM Block Explorer","description":"Autonomys hosted block explorer","sidebar":"tutorialSidebar"},"develop/nova/Resources/faucet":{"id":"develop/nova/Resources/faucet","title":"Autonomys Faucet","description":"Guide on utilizing Autonomys faucets for getting test tokens","sidebar":"tutorialSidebar"},"develop/nova/setting-up-metamask":{"id":"develop/nova/setting-up-metamask","title":"Setting up MetaMask","description":"Guide on setting up MetaMask for development purposes","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/gpu-plotter":{"id":"farming-&-staking/farming/additional-guides/gpu-plotter","title":"GPU Plotter","description":"Tips on GPU Plotter","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/grafana-dashboard":{"id":"farming-&-staking/farming/additional-guides/grafana-dashboard","title":"Grafana Dashboard","description":"How to configure the Grafana dashboard for an Autonomys Network node","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/port-config":{"id":"farming-&-staking/farming/additional-guides/port-config","title":"Port Forwarding & Firewall","description":"A comprehensive guide on port forwarding and firewall rules for Autonomys Network","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/verify-farmer":{"id":"farming-&-staking/farming/additional-guides/verify-farmer","title":"Verified Farmer Discord Role","description":"How to verify your Autonomys Network farmer","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-farming-cluster":{"id":"farming-&-staking/farming/advanced-cli/cli-farming-cluster","title":"Farming Cluster","description":"How to Set Up and Configure a Farming Cluster","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-install":{"id":"farming-&-staking/farming/advanced-cli/cli-install","title":"Install","description":"How to run an Autonomys Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-tips":{"id":"farming-&-staking/farming/advanced-cli/cli-tips","title":"Tips & Tricks","description":"How to run an Autonomys Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/taurus-network":{"id":"farming-&-staking/farming/advanced-cli/taurus-network","title":"Taurus Network","description":"How to run an Autonomys Testnet Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/common-problems":{"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.","sidebar":"tutorialSidebar"},"farming-&-staking/farming/intro":{"id":"farming-&-staking/farming/intro","title":"Getting Started","description":"Farming Getting Started Guide","sidebar":"tutorialSidebar"},"farming-&-staking/farming/space-acres/install":{"id":"farming-&-staking/farming/space-acres/install","title":"Install","description":"How to run an Autonomys Network Farmer with Space Acres GUI Application","sidebar":"tutorialSidebar"},"farming-&-staking/farming/space-acres/translate_space_acres":{"id":"farming-&-staking/farming/space-acres/translate_space_acres","title":"Translation Guide","description":"Translation Guide for Space Acres","sidebar":"tutorialSidebar"},"farming-&-staking/staking/intro":{"id":"farming-&-staking/staking/intro","title":"Getting Started","description":"Introduction to Staking and Operators","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/deregister-operator":{"id":"farming-&-staking/staking/operators/deregister-operator","title":"Deregister an Operator","description":"Operators Uninstall guide","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/register-operator":{"id":"farming-&-staking/staking/operators/register-operator","title":"Register an Operator","description":"Operators Setup guide","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/tips-operator":{"id":"farming-&-staking/staking/operators/tips-operator","title":"Operator Tips & Tricks","description":"Operators Tips & Tricks","sidebar":"tutorialSidebar"},"farming-&-staking/staking/staking":{"id":"farming-&-staking/staking/staking","title":"Staking guide","description":"Staking guide","sidebar":"tutorialSidebar"},"farming-&-staking/timekeeping":{"id":"farming-&-staking/timekeeping","title":"Timekeeping","description":"Farming on the Autonomys Network","sidebar":"tutorialSidebar"},"farming-&-staking/wallets/polkadot":{"id":"farming-&-staking/wallets/polkadot","title":"polkadot{.js} extension","description":"How to configure the Polkadot Substrate wallet for the Subspace Network","sidebar":"tutorialSidebar"},"farming-&-staking/wallets/subwallet":{"id":"farming-&-staking/wallets/subwallet","title":"\u2728 SubWallet","description":"How to configure the SubWallet Substrate wallet for the Autonomys Network","sidebar":"tutorialSidebar"},"learn/academy":{"id":"learn/academy","title":"Autonomys Academy","description":"Discover the Autonomys Protocol\'s full potential in the Autonomys Academy.","sidebar":"tutorialSidebar"},"learn/intro":{"id":"learn/intro","title":"Getting Started","description":"A Getting Started guide for the Autonomys Network","sidebar":"tutorialSidebar"},"learn/security":{"id":"learn/security","title":"Safety and Security","description":"General security measures. Cyberattacks and fraud protection. Server protection.","sidebar":"tutorialSidebar"},"participate/community/contributions":{"id":"participate/community/contributions","title":"Community Contributions","description":"Autonomys Network Community Contributions","sidebar":"tutorialSidebar"},"participate/contribute/code-of-conduct":{"id":"participate/contribute/code-of-conduct","title":"Code of Conduct","description":"Code of Conduct for the Autonomys Labs Documentation","sidebar":"tutorialSidebar"},"participate/contribute/intro":{"id":"participate/contribute/intro","title":"Getting started","description":"How to contribute to the Autonomys Docs","sidebar":"tutorialSidebar"},"participate/contribute/translate":{"id":"participate/contribute/translate","title":"Docs Translation","description":"Translation Guide for the Autonomys Docs","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.fe99b259.js b/assets/js/22dd74f7.fe99b259.js deleted file mode 100644 index f7a2d586cd7..00000000000 --- a/assets/js/22dd74f7.fe99b259.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1567],{55226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Learn","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/learn/intro","docId":"learn/intro","unlisted":false},{"type":"link","label":"Safety and Security","href":"/learn/security","docId":"learn/security","unlisted":false},{"type":"link","label":"Autonomys Academy","href":"/learn/academy","docId":"learn/academy","unlisted":false}]},{"type":"category","label":"Farming & Staking","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"Wallets","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"\u2728 SubWallet","href":"/wallets/subwallet","docId":"farming-&-staking/wallets/subwallet","unlisted":false},{"type":"link","label":"polkadot{.js} extension","href":"/wallets/polkadot","docId":"farming-&-staking/wallets/polkadot","unlisted":false}],"href":"/wallets"},{"type":"category","label":"Farming","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Getting Started","href":"/farming/intro","docId":"farming-&-staking/farming/intro","unlisted":false},{"type":"category","label":"\u2728 Space Acres","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Install","href":"/farming/space-acres/install","docId":"farming-&-staking/farming/space-acres/install","unlisted":false},{"type":"link","label":"Translation Guide","href":"/farming/space-acres/translate","docId":"farming-&-staking/farming/space-acres/translate_space_acres","unlisted":false}]},{"type":"category","label":"Advanced CLI","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Install","href":"/farming/advanced-cli/install","docId":"farming-&-staking/farming/advanced-cli/cli-install","unlisted":false},{"type":"link","label":"Farming Cluster","href":"/farming/advanced-cli/cluster","docId":"farming-&-staking/farming/advanced-cli/cli-farming-cluster","unlisted":false},{"type":"link","label":"Tips & Tricks","href":"/farming/advanced-cli/tips","docId":"farming-&-staking/farming/advanced-cli/cli-tips","unlisted":false},{"type":"link","label":"Taurus Network","href":"/farming/advanced-cli/taurus","docId":"farming-&-staking/farming/advanced-cli/taurus-network","unlisted":false}]},{"type":"link","label":"Common Problems","href":"/farming/common-problems","docId":"farming-&-staking/farming/common-problems","unlisted":false},{"type":"category","label":"Additional Guides","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"GPU Plotter","href":"/farming/guides/gpu-plotter","docId":"farming-&-staking/farming/additional-guides/gpu-plotter","unlisted":false},{"type":"link","label":"Port Forwarding & Firewall","href":"/farming/guides/port-config","docId":"farming-&-staking/farming/additional-guides/port-config","unlisted":false},{"type":"link","label":"Grafana Dashboard","href":"/farming/guides/grafana-dashboard","docId":"farming-&-staking/farming/additional-guides/grafana-dashboard","unlisted":false},{"type":"link","label":"Verified Farmer Discord Role","href":"/farming/guides/verified-farmer","docId":"farming-&-staking/farming/additional-guides/verify-farmer","unlisted":false}],"href":"/farming/guides"}],"href":"/category/farming"},{"type":"category","label":" \u264a Operators & Nominators","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/staking/intro","docId":"farming-&-staking/staking/intro","unlisted":false},{"type":"category","label":"Operators Guide","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Register an Operator","href":"/staking/operator/register","docId":"farming-&-staking/staking/operators/register-operator","unlisted":false},{"type":"link","label":"Deregister an Operator","href":"/staking/operator/deregister","docId":"farming-&-staking/staking/operators/deregister-operator","unlisted":false},{"type":"link","label":"Operator Tips & Tricks","href":"/staking/operator/tips","docId":"farming-&-staking/staking/operators/tips-operator","unlisted":false}]},{"type":"link","label":"Staking guide","href":"/staking/stake","docId":"farming-&-staking/staking/staking","unlisted":false}]},{"type":"link","label":"Timekeeping","href":"/farming/timekeeper","docId":"farming-&-staking/timekeeping","unlisted":false}]},{"type":"category","label":"Develop","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started","href":"/develop/intro","docId":"develop/intro","unlisted":false},{"type":"category","label":"Auto SDK","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/develop/auto-sdk/intro","docId":"develop/auto_sdk/intro","unlisted":false},{"type":"link","label":"Consensus","href":"/develop/auto-sdk/consensus","docId":"develop/auto_sdk/auto-consensus","unlisted":false},{"type":"link","label":"Auto ID","href":"/develop/auto-sdk/auto-id","docId":"develop/auto_sdk/auto-id","unlisted":false},{"type":"link","label":"XDM","href":"/develop/auto-sdk/xdm","docId":"develop/auto_sdk/auto-xdm","unlisted":false},{"type":"link","label":"Utils","href":"/develop/auto-sdk/utils","docId":"develop/auto_sdk/auto-utils","unlisted":false},{"type":"link","label":"Drive","href":"/develop/auto-sdk/drive","docId":"develop/auto_sdk/auto-drive","unlisted":false}],"href":"/develop/auto-sdk"},{"type":"category","label":"\u264a Nova EVM","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/develop/nova/introduction","docId":"develop/nova/intro","unlisted":false},{"type":"link","label":"General Information","href":"/develop/nova/general","docId":"develop/nova/general-information","unlisted":false},{"type":"link","label":"Setting up MetaMask","href":"/develop/nova/metamask","docId":"develop/nova/setting-up-metamask","unlisted":false},{"type":"category","label":"Additional Guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Foundry","href":"/develop/nova/guides/foundry","docId":"develop/nova/additional-guides/foundry_guide","unlisted":false},{"type":"link","label":"Hardhat","href":"/develop/nova/guides/hardhat","docId":"develop/nova/additional-guides/hardhat_guide","unlisted":false},{"type":"link","label":"Local Development","href":"/develop/nova/guides/local-development","docId":"develop/nova/additional-guides/local_development","unlisted":false},{"type":"link","label":"Remix IDE","href":"/develop/nova/guides/remix","docId":"develop/nova/additional-guides/remix_guide","unlisted":false}]},{"type":"category","label":"Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Autonomys Faucet","href":"/develop/nova/faucet","docId":"develop/nova/Resources/faucet","unlisted":false},{"type":"link","label":"Nova Block Explorer","href":"/develop/nova/block-explorer","docId":"develop/nova/Resources/block_explorer","unlisted":false}]}],"href":"/develop/nova"}]},{"type":"category","label":"Participate","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Contribute","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Getting started","href":"/participate/contribute/intro","docId":"participate/contribute/intro","unlisted":false},{"type":"link","label":"Code of Conduct","href":"/participate/contribute/code-of-conduct","docId":"participate/contribute/code-of-conduct","unlisted":false},{"type":"link","label":"Docs Translation","href":"/participate/contribute/translate","docId":"participate/contribute/translate","unlisted":false}]},{"type":"category","label":"Community","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Community Contributions","href":"/participate/community/contributions","docId":"participate/community/contributions","unlisted":false}]}]}]},"docs":{"develop/auto_sdk/auto-consensus":{"id":"develop/auto_sdk/auto-consensus","title":"Consensus","description":"Functions to interact with the consensus chain","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-drive":{"id":"develop/auto_sdk/auto-drive","title":"Drive","description":"Utilities for creating and managing IPLD DAGs","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-id":{"id":"develop/auto_sdk/auto-id","title":"Auto ID","description":"Functions to build on Auto ID domain","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-utils":{"id":"develop/auto_sdk/auto-utils","title":"Utils","description":"Utility functions for the Auto SDK","sidebar":"tutorialSidebar"},"develop/auto_sdk/auto-xdm":{"id":"develop/auto_sdk/auto-xdm","title":"XDM","description":"Functions to utilize Auto XDM (Cross-Domain Messaging)","sidebar":"tutorialSidebar"},"develop/auto_sdk/intro":{"id":"develop/auto_sdk/intro","title":"Introduction","description":"Start Building using Auto SDK","sidebar":"tutorialSidebar"},"develop/intro":{"id":"develop/intro","title":"Getting Started","description":"A Getting Started guide for the Autonomys Network","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/foundry_guide":{"id":"develop/nova/additional-guides/foundry_guide","title":"Foundry","description":"Testing and Deploying Smart Contracts using Foundry","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/hardhat_guide":{"id":"develop/nova/additional-guides/hardhat_guide","title":"Hardhat","description":"Testing and Deploying Smart Contracts using HardHat","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/local_development":{"id":"develop/nova/additional-guides/local_development","title":"Local Development","description":"Guide on local development Autonomys Node and Farmer","sidebar":"tutorialSidebar"},"develop/nova/additional-guides/remix_guide":{"id":"develop/nova/additional-guides/remix_guide","title":"Remix IDE","description":"Testing and Deploying Smart Contracts using Remix IDE","sidebar":"tutorialSidebar"},"develop/nova/general-information":{"id":"develop/nova/general-information","title":"General Information","description":"Guide on setting up","sidebar":"tutorialSidebar"},"develop/nova/intro":{"id":"develop/nova/intro","title":"Introduction","description":"Quick start one-pager","sidebar":"tutorialSidebar"},"develop/nova/Resources/block_explorer":{"id":"develop/nova/Resources/block_explorer","title":"Nova Block Explorer","description":"Autonomys hosted block explorer","sidebar":"tutorialSidebar"},"develop/nova/Resources/faucet":{"id":"develop/nova/Resources/faucet","title":"Autonomys Faucet","description":"Guide on utilizing Autonomys faucets for getting test tokens","sidebar":"tutorialSidebar"},"develop/nova/setting-up-metamask":{"id":"develop/nova/setting-up-metamask","title":"Setting up MetaMask","description":"Guide on setting up MetaMask for development purposes","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/gpu-plotter":{"id":"farming-&-staking/farming/additional-guides/gpu-plotter","title":"GPU Plotter","description":"Tips on GPU Plotter","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/grafana-dashboard":{"id":"farming-&-staking/farming/additional-guides/grafana-dashboard","title":"Grafana Dashboard","description":"How to configure the Grafana dashboard for an Autonomys Network node","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/port-config":{"id":"farming-&-staking/farming/additional-guides/port-config","title":"Port Forwarding & Firewall","description":"A comprehensive guide on port forwarding and firewall rules for Autonomys Network","sidebar":"tutorialSidebar"},"farming-&-staking/farming/additional-guides/verify-farmer":{"id":"farming-&-staking/farming/additional-guides/verify-farmer","title":"Verified Farmer Discord Role","description":"How to verify your Autonomys Network farmer","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-farming-cluster":{"id":"farming-&-staking/farming/advanced-cli/cli-farming-cluster","title":"Farming Cluster","description":"How to Set Up and Configure a Farming Cluster","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-install":{"id":"farming-&-staking/farming/advanced-cli/cli-install","title":"Install","description":"How to run an Autonomys Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/cli-tips":{"id":"farming-&-staking/farming/advanced-cli/cli-tips","title":"Tips & Tricks","description":"How to run an Autonomys Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/advanced-cli/taurus-network":{"id":"farming-&-staking/farming/advanced-cli/taurus-network","title":"Taurus Network","description":"How to run an Autonomys Testnet Network Farmer with the Substrate CLI","sidebar":"tutorialSidebar"},"farming-&-staking/farming/common-problems":{"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.","sidebar":"tutorialSidebar"},"farming-&-staking/farming/intro":{"id":"farming-&-staking/farming/intro","title":"Getting Started","description":"Farming Getting Started Guide","sidebar":"tutorialSidebar"},"farming-&-staking/farming/space-acres/install":{"id":"farming-&-staking/farming/space-acres/install","title":"Install","description":"How to run an Autonomys Network Farmer with Space Acres GUI Application","sidebar":"tutorialSidebar"},"farming-&-staking/farming/space-acres/translate_space_acres":{"id":"farming-&-staking/farming/space-acres/translate_space_acres","title":"Translation Guide","description":"Translation Guide for Space Acres","sidebar":"tutorialSidebar"},"farming-&-staking/staking/intro":{"id":"farming-&-staking/staking/intro","title":"Getting Started","description":"Introduction to Staking and Operators","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/deregister-operator":{"id":"farming-&-staking/staking/operators/deregister-operator","title":"Deregister an Operator","description":"Operators Uninstall guide","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/register-operator":{"id":"farming-&-staking/staking/operators/register-operator","title":"Register an Operator","description":"Operators Setup guide","sidebar":"tutorialSidebar"},"farming-&-staking/staking/operators/tips-operator":{"id":"farming-&-staking/staking/operators/tips-operator","title":"Operator Tips & Tricks","description":"Operators Tips & Tricks","sidebar":"tutorialSidebar"},"farming-&-staking/staking/staking":{"id":"farming-&-staking/staking/staking","title":"Staking guide","description":"Staking guide","sidebar":"tutorialSidebar"},"farming-&-staking/timekeeping":{"id":"farming-&-staking/timekeeping","title":"Timekeeping","description":"Farming on the Autonomys Network","sidebar":"tutorialSidebar"},"farming-&-staking/wallets/polkadot":{"id":"farming-&-staking/wallets/polkadot","title":"polkadot{.js} extension","description":"How to configure the Polkadot Substrate wallet for the Subspace Network","sidebar":"tutorialSidebar"},"farming-&-staking/wallets/subwallet":{"id":"farming-&-staking/wallets/subwallet","title":"\u2728 SubWallet","description":"How to configure the SubWallet Substrate wallet for the Autonomys Network","sidebar":"tutorialSidebar"},"learn/academy":{"id":"learn/academy","title":"Autonomys Academy","description":"Discover the Autonomys Protocol\'s full potential in the Autonomys Academy.","sidebar":"tutorialSidebar"},"learn/intro":{"id":"learn/intro","title":"Getting Started","description":"A Getting Started guide for the Autonomys Network","sidebar":"tutorialSidebar"},"learn/security":{"id":"learn/security","title":"Safety and Security","description":"General security measures. Cyberattacks and fraud protection. Server protection.","sidebar":"tutorialSidebar"},"participate/community/contributions":{"id":"participate/community/contributions","title":"Community Contributions","description":"Autonomys Network Community Contributions","sidebar":"tutorialSidebar"},"participate/contribute/code-of-conduct":{"id":"participate/contribute/code-of-conduct","title":"Code of Conduct","description":"Code of Conduct for the Autonomys Labs Documentation","sidebar":"tutorialSidebar"},"participate/contribute/intro":{"id":"participate/contribute/intro","title":"Getting started","description":"How to contribute to the Autonomys Docs","sidebar":"tutorialSidebar"},"participate/contribute/translate":{"id":"participate/contribute/translate","title":"Docs Translation","description":"Translation Guide for the Autonomys Docs","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/33b25d2b.a4b970cd.js b/assets/js/33b25d2b.a4b970cd.js new file mode 100644 index 00000000000..a7bc7a49cbe --- /dev/null +++ b/assets/js/33b25d2b.a4b970cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7282],{24275:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var r=t(74848),n=t(28453);const s={title:"Auto EVM Block Explorer",sidebar_position:2,description:"Autonomys hosted block explorer",slug:"/develop/auto-evm/block-explorer",keywords:["EVM Domain Auto EVM","Autonomys Network"]},l=void 0,i={id:"develop/nova/Resources/block_explorer",title:"Auto EVM Block Explorer",description:"Autonomys hosted block explorer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/block_explorer.md",sourceDirName:"develop/nova/Resources",slug:"/develop/auto-evm/block-explorer",permalink:"/develop/auto-evm/block-explorer",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/Resources/block_explorer.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Auto EVM Block Explorer",sidebar_position:2,description:"Autonomys hosted block explorer",slug:"/develop/auto-evm/block-explorer",keywords:["EVM Domain Auto EVM","Autonomys Network"]},sidebar:"tutorialSidebar",previous:{title:"Autonomys Faucet",permalink:"/develop/auto-evm/faucet"},next:{title:"Getting started",permalink:"/participate/contribute/intro"}},a={},c=[{value:"EVM Domain Auto EVM Block Explorer",id:"evm-domain-auto-evm-block-explorer",level:3}];function p(e){const o={a:"a",h3:"h3",img:"img",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.h3,{id:"evm-domain-auto-evm-block-explorer",children:"EVM Domain Auto EVM Block Explorer"}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.strong,{children:(0,r.jsx)(o.a,{href:"https://nova.subspace.network",children:"Auto EVM Block Explorer"})})}),"\n",(0,r.jsx)(o.p,{children:"This early version provides a clear and user-friendly visualization of Autonomys-specific statistics that cater to the needs of our farmers and developers."}),"\n",(0,r.jsxs)(o.p,{children:["On the top of the page, you can easily toggle between ",(0,r.jsx)(o.strong,{children:"all available networks"})," and ",(0,r.jsx)(o.strong,{children:"EVM"}),"."]}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.img,{alt:"BlockExplorer-1",src:t(30293).A+"",width:"1063",height:"650"})})]})}function u(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},30293:(e,o,t)=>{t.d(o,{A:()=>r});const r=t.p+"assets/images/BlockExplorer-1-3014417b73dafd0f9681460dae375e66.png"},28453:(e,o,t)=>{t.d(o,{R:()=>l,x:()=>i});var r=t(96540);const n={},s=r.createContext(n);function l(e){const o=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function i(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),r.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/33b25d2b.ebba7cf3.js b/assets/js/33b25d2b.ebba7cf3.js deleted file mode 100644 index 12d9f7cc507..00000000000 --- a/assets/js/33b25d2b.ebba7cf3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7282],{24275:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var r=t(74848),n=t(28453);const s={title:"Nova Block Explorer",sidebar_position:2,description:"Autonomys hosted block explorer",slug:"/develop/nova/block-explorer",keywords:["EVM Domain Nova","Autonomys Network"]},l=void 0,a={id:"develop/nova/Resources/block_explorer",title:"Nova Block Explorer",description:"Autonomys hosted block explorer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/block_explorer.md",sourceDirName:"develop/nova/Resources",slug:"/develop/nova/block-explorer",permalink:"/develop/nova/block-explorer",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/Resources/block_explorer.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Nova Block Explorer",sidebar_position:2,description:"Autonomys hosted block explorer",slug:"/develop/nova/block-explorer",keywords:["EVM Domain Nova","Autonomys Network"]},sidebar:"tutorialSidebar",previous:{title:"Autonomys Faucet",permalink:"/develop/nova/faucet"},next:{title:"Getting started",permalink:"/participate/contribute/intro"}},i={},c=[{value:"EVM Domain Nova Block Explorer",id:"evm-domain-nova-block-explorer",level:3}];function p(e){const o={a:"a",h3:"h3",img:"img",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.h3,{id:"evm-domain-nova-block-explorer",children:"EVM Domain Nova Block Explorer"}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.strong,{children:(0,r.jsx)(o.a,{href:"https://nova.subspace.network",children:"Nova Block Explorer"})})}),"\n",(0,r.jsx)(o.p,{children:"This early version provides a clear and user-friendly visualization of Autonomys-specific statistics that cater to the needs of our farmers and developers."}),"\n",(0,r.jsxs)(o.p,{children:["On the top of the page, you can easily toggle between ",(0,r.jsx)(o.strong,{children:"all available networks"})," and ",(0,r.jsx)(o.strong,{children:"EVM"}),"."]}),"\n",(0,r.jsx)(o.p,{children:(0,r.jsx)(o.img,{alt:"BlockExplorer-1",src:t(30293).A+"",width:"1063",height:"650"})})]})}function d(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},30293:(e,o,t)=>{t.d(o,{A:()=>r});const r=t.p+"assets/images/BlockExplorer-1-3014417b73dafd0f9681460dae375e66.png"},28453:(e,o,t)=>{t.d(o,{R:()=>l,x:()=>a});var r=t(96540);const n={},s=r.createContext(n);function l(e){const o=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),r.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/de/assets/js/4324.a9dc4668.js b/assets/js/4324.78183b5c.js similarity index 99% rename from de/assets/js/4324.a9dc4668.js rename to assets/js/4324.78183b5c.js index 9ac1ead3afb..d91095fe031 100644 --- a/de/assets/js/4324.a9dc4668.js +++ b/assets/js/4324.78183b5c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4324],{14324:e=>{e.exports=JSON.parse('[{"Name":"Hendot (hendot13)","Languages":"Indonesian","Translated (Words)":"28827","Target Words":"27333","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-19 10:42:38","originalName":"hendot13","id":14937375,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14937375/medium/5b0f4f71323332d248d0dd7acc34aff2_default.png","hashKey":"6a3a0492dcd81daee7bb7ca47c2591dbab0771e3005ed27f0da742510ce97467"},{"Name":"Zulkis","Languages":"Russian","Translated (Words)":"28289","Target Words":"24996","Approved (Words)":"120","Voted":"9","\\"+\\" votes received":"4","\\"-\\" votes received":"0","Winning (Words)":"1999","Joined":"2023-12-08 10:54:56","originalName":"Zulkis","id":16135670,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16135670/medium/03a309565947a1aca6f4e134e61c3617.png","hashKey":"25dedda94216dd93b93fa5beb19c774f7dfe49b49aa87e216ff4ff5a3e99b184"},{"Name":"BlueDog","Languages":"Italian","Translated (Words)":"23150","Target Words":"24239","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-07 18:36:26","originalName":"BlueDog","id":16361068,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16361068/medium/f3ee84d16fb71ebab5d52910db333ab0.jpeg","hashKey":"fca800e4917a402b1ad93b5054ca05589399cdcf167ac8f00242528769e11947"},{"Name":"z W (ooplay)","Languages":"Chinese Simplified","Translated (Words)":"19193","Target Words":"28814","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"619","Joined":"2023-09-13 13:08:12","originalName":"ooplay","id":16008847,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16008847/medium/0c57c51d6c54a8560f99d567fc27c611.jpeg","hashKey":"c664fcb7081dc4e677ef54ee7b1a71332a0a7a3045427277b52fbe3b0d3eecf2"},{"Name":"wei chen (wei.chen.cg)","Languages":"Chinese Simplified","Translated (Words)":"16779","Target Words":"25822","Approved (Words)":"19154","Voted":"6","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"15777","Joined":"2024-10-08 04:44:08","originalName":"wei.chen.cg","id":16337820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337820/medium/cf504631ac9b0891027ab58b28e8cf71.jpeg","hashKey":"cf523dc09d1b9af83878a5e954591da8215b671a559fa7161abf5771bc205914"},{"Name":"Scorpio2017","Languages":"Russian","Translated (Words)":"14126","Target Words":"12886","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"1","\\"-\\" votes received":"7","Winning (Words)":"2560","Joined":"2023-08-20 16:43:28","originalName":"Scorpio2017","id":15974887,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15974887/medium/72302ffbe059e483a9e68286d2c27d4e.jpg","hashKey":"58309e779828e01397748a49ba7bee12e17eb789057c637351ff4fd8d45f73b6"},{"Name":"Giorge Abdala (giorgeabdala)","Languages":"Portuguese","Translated (Words)":"11504","Target Words":"12131","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-24 10:41:45","originalName":"giorgeabdala","id":15140308,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15140308/medium/b2595687225584dbc2ca8ddcb4fca965_default.png","hashKey":"969ec702d38bd5c3beb461177d41dddcd60fa0b0efaeb8fbffc7fac138ddf390"},{"Name":"\u83dccc (caixiaoguang110)","Languages":"Chinese Simplified","Translated (Words)":"11401","Target Words":"17237","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"720","Joined":"2024-11-11 01:50:12","originalName":"caixiaoguang110","id":16672231,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16672231/medium/e1c3eeb04b78c0cbf752824c855f7868.jpeg","hashKey":"d3dedcd89887d774ff4db0c707463c303c00bced675cbf2706b2eda13e59c4cb"},{"Name":"beyraandrade","Languages":"Spanish","Translated (Words)":"9885","Target Words":"11076","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 17:44:10","originalName":"beyraandrade","id":16626689,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626689/medium/365a57e8ae1753b8b5986dcc8c7de156_default.png","hashKey":"5ef6b1722e8982310f5a000c3db6dac5071137525088ef706163bc8861303de6"},{"Name":"megamozg","Languages":"Ukrainian; Russian","Translated (Words)":"9179","Target Words":"8592","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"2","\\"-\\" votes received":"0","Winning (Words)":"90","Joined":"2023-10-13 12:33:28","originalName":"megamozg","id":16052146,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16052146/medium/5825d4cf8f7c4e40e0b91337ec41511d.jpg","hashKey":"6a58a13c15407e7eb8e24d95242148aba2f14f4f78892465ea0fdea1c5e401f2"},{"Name":"Baran \xc7evik (callmebaraan)","Languages":"Turkish","Translated (Words)":"9101","Target Words":"8409","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"714","Joined":"2024-10-13 06:56:54","originalName":"callmebaraan","id":16624679,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624679/medium/486db993f1e3f8fb005ef747c0bcccde.png","hashKey":"5f4acc8e847d98e21095704aeb13fa9b56309818f6a499751a67e2cec0d9caae"},{"Name":"Matthias Rust (Luckysprite)","Languages":"German","Translated (Words)":"5533","Target Words":"5543","Approved (Words)":"5542","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"5495","Joined":"2024-07-21 02:04:11","originalName":"Luckysprite","id":16481853,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16481853/medium/600cf46f8eb1e2c78f1a61d1720e2707.png","hashKey":"aa3cba62fa0395b1ba04a0ad7e8ccc113c69685e36ec3da12365ba07f83d27e2"},{"Name":"Wedding Eknopka (cryptan)","Languages":"Ukrainian","Translated (Words)":"5041","Target Words":"4583","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"132","Joined":"2023-10-30 14:41:01","originalName":"cryptan","id":16079614,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16079614/medium/7efbf58e91149c399d561e610e24d1fc.png","hashKey":"2a7693598f6e181b5aa8079d46d20c61c005bccef7faa182730a94ff5be4580f"},{"Name":"Fan MOZG (kievmozg)","Languages":"Ukrainian","Translated (Words)":"4689","Target Words":"4275","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"325","Joined":"2023-10-27 13:39:14","originalName":"kievmozg","id":16074676,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16074676/medium/fb36ff367bc6af6d8a9b32a7393d02b3.png","hashKey":"7c4686044b716bb883c2e51f6967a0607021a40a7d2a0bd5af625a974a8d79b5"},{"Name":"StrowDeATh","Languages":"Spanish","Translated (Words)":"4652","Target Words":"5045","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"4319","Joined":"2023-08-20 23:44:36","originalName":"StrowDeATh","id":14942527,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14942527/medium/8a7fe9c38c906fa840b3aa257cf073e8.jpg","hashKey":"21734af256e326baa1d64904abbe4f9548bd13090e9faaa030f6db7575437297"},{"Name":"Mystery men#1921 (Mystery_men)","Languages":"Chinese Simplified","Translated (Words)":"4467","Target Words":"6800","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"7","Joined":"2024-09-30 22:36:20","originalName":"Mystery_men","id":15388574,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15388574/medium/0a06dcbc726145f3748cc73dac3445a3.jpg","hashKey":"9fbe3c5744836f498982f92758a4c2be19cf5d9a4ab6fc6061e2afd23d7e612c"},{"Name":"bingbang (bingbank)","Languages":"French","Translated (Words)":"3559","Target Words":"3990","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 15:19:20","originalName":"bingbank","id":16480389,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16480389/medium/f7ad6ee1cf7826308121aed83ffa410e.jpeg","hashKey":"fb659f826097a377d8b37a73e401bd8e7ee0241d2b2e2568173256dbd22458f5"},{"Name":"Dima Zadorozhny (Dmitryzd)","Languages":"Russian","Translated (Words)":"3523","Target Words":"3133","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"15","Joined":"2023-11-15 12:32:48","originalName":"Dmitryzd","id":16104582,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16104582/medium/9f1092113c662170dcf0517f4857632f.jpeg","hashKey":"71b6acdce2552558ef15716b133020ad4b4a8c4fe8373898f496ceca4e4fc401"},{"Name":"Tech Web3 (web3crypto)","Languages":"Ukrainian","Translated (Words)":"3402","Target Words":"2926","Approved (Words)":"0","Voted":"2","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-14 07:32:41","originalName":"web3crypto","id":16053210,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16053210/medium/747d6db2a69ccf1a4b6990e548ce0879.png","hashKey":"d8df32f8396ed231827b58c2da47f1c900f59fec98bf152bc45f42bddbdc128c"},{"Name":"Y L (Fatman13)","Languages":"Chinese Simplified","Translated (Words)":"3401","Target Words":"5068","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"517","Joined":"2024-04-25 22:28:30","originalName":"Fatman13","id":16337966,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337966/medium/a57d1b69173c1adb141f441fb46f5fea.jpeg","hashKey":"aeae02909ea5dc7902fa6419174691821ab725aa8ccb7d573cd4d84d1014f14e"},{"Name":"oaigoodman","Languages":"Vietnamese","Translated (Words)":"2937","Target Words":"4294","Approved (Words)":"0","Voted":"2","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-16 06:26:11","originalName":"oaigoodman","id":16329256,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16329256/medium/dfb55ff7711309c0240c39ac792580b0.png","hashKey":"80189face3ff5a1bedbf14b32e6c0c499bee5518d096bb8c783d93d0a0d6f453"},{"Name":"\u041a\u0438\u0440\u0438\u043b\u043b \u0422\u0440\u043e\u044f\u043d (PurpleMoney)","Languages":"Russian","Translated (Words)":"2533","Target Words":"2311","Approved (Words)":"0","Voted":"9","\\"+\\" votes received":"1","\\"-\\" votes received":"0","Winning (Words)":"1339","Joined":"2023-08-30 18:47:31","originalName":"PurpleMoney","id":15495550,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15495550/medium/efe552d35615936c1c0f624462db1ac7.png","hashKey":"49d51559b3fd8799e78668062248008c786ed9b8a0cc29f619e4726ad41f80bd"},{"Name":"Captainclogs","Languages":"Indonesian; English","Translated (Words)":"2477","Target Words":"2364","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-14 00:29:22","originalName":"Captainclogs","id":16142762,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16142762/medium/c156acc967bef46d9a624b54405825e0.jpg","hashKey":"a9b581a474fb0caa90c2a5546274082196813299991d91bf3f2936919e510747"},{"Name":"Shushu (degenshushu)","Languages":"Chinese Simplified","Translated (Words)":"2004","Target Words":"3341","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"1822","Joined":"2024-10-12 23:26:29","originalName":"degenshushu","id":16624347,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624347/medium/84d14c33d8d0dccfca727a548bd52f8d.png","hashKey":"0a42b5746d853a0a654fe7e1b59fa0a7bc2dc5a01b70193abd695a30033a8020"},{"Name":"DarienRahl","Languages":"Polish","Translated (Words)":"1618","Target Words":"1513","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-29 22:40:56","originalName":"DarienRahl","id":16325736,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16325736/medium/04198c97b88144b1510a6fcafe43fbaf.jpeg","hashKey":"e7acbe0101d867d4a642166c28adbfb7540a270f88319063f6cc58b0ca700da2"},{"Name":"KPD","Languages":"Hindi","Translated (Words)":"1372","Target Words":"2550","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-07 04:07:32","originalName":"KPD","id":15726675,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15726675/medium/a5e65fd9622b862b7aec1f4ac7b975bb_default.png","hashKey":"9138e6b3809eabcd42eff352026f1d0f7ac224e75cc0a7bd8585941ae2e43fcb"},{"Name":"Andr\xe9 Lopes (frammeDeveloper)","Languages":"Portuguese","Translated (Words)":"816","Target Words":"894","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-04 21:20:00","originalName":"frammeDeveloper","id":16610749,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16610749/medium/e3586645259b084a86b5076e75295722.png","hashKey":"5e2a584970183bbd3fe265108c9b2012db445eedc6bd7bb464766ad6c89448cc"},{"Name":"moke33","Languages":"Chinese Simplified","Translated (Words)":"759","Target Words":"1266","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"1","Joined":"2024-03-31 22:27:09","originalName":"moke33","id":16305788,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16305788/medium/60493ca31a2468213fb641aa9b3b9632_default.png","hashKey":"91f9222b1f8c78e1fbd84a47f0d0abf154ff5bcb1034fc1dd8c1378129078876"},{"Name":"NakoTurk","Languages":"Turkish","Translated (Words)":"752","Target Words":"724","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 05:58:05","originalName":"NakoTurk","id":15438770,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15438770/medium/42cbec12b27742485607c70176f111cb.png","hashKey":"8420c8df6ecbf3df5f5d68edd0315a0f65b792712deed0dfe06aaa10e00a40f5"},{"Name":"Emil F (Emilios)","Languages":"Russian","Translated (Words)":"695","Target Words":"576","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"1","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-09 13:49:08","originalName":"Emilios","id":15396634,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15396634/medium/f670f74b21acf4522325bb271b212b83.jpg","hashKey":"722800bda5080768582a9e2f1e7e03ca4158cecfc33b39fc247f1d41a297ca98"},{"Name":"Yurii Bukshuk (Yurally)","Languages":"Ukrainian","Translated (Words)":"587","Target Words":"507","Approved (Words)":"0","Voted":"3","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-13 11:59:11","originalName":"Yurally","id":15386666,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386666/medium/c21c82ad1697a0923faa0ab6ca255281.JPG","hashKey":"491365ea399c34c45ac4c7f41be2bbd637100f36f77f03833e475c2fbb5d6619"},{"Name":"DragonChris","Languages":"Chinese Simplified","Translated (Words)":"515","Target Words":"814","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"188","Joined":"2024-11-06 00:44:12","originalName":"DragonChris","id":16662325,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16662325/medium/e2f471c82e122e875b509de0c4fcfb8a_default.png","hashKey":"19c002ff588293f145194afd7679c7175209db467772816124ab00fe85fb83b5"},{"Name":"Nirnaeth (nirnaeth-arnoediad)","Languages":"Turkish","Translated (Words)":"492","Target Words":"435","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-06 05:38:35","originalName":"nirnaeth-arnoediad","id":15386992,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386992/medium/c451aabc75b1681b3d948de3499e7794.png","hashKey":"c038aaf1b82676e49d0e1e87374c2b1bc3000ba863c9b0f410a4d425411be2a1"},{"Name":"ratatuj","Languages":"Russian","Translated (Words)":"480","Target Words":"454","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-02 14:40:31","originalName":"ratatuj","id":16607033,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16607033/medium/6b25fea2d35384f5a15691fb60a9debd_default.png","hashKey":"1704872ae70e6eae8002aadbc8eec45014d394393bfffa7aa04c074950ebb0ae"},{"Name":"Shuyong Yang (shuyong.yang)","Languages":"Chinese Simplified; Turkish","Translated (Words)":"313","Target Words":"367","Approved (Words)":"1726","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"255","Joined":"2024-10-11 21:01:41","originalName":"shuyong.yang","id":16612105,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16612105/medium/c09fdff2006a5265e62264af6289445a.png","hashKey":"1d4c0bc5f047f6a2b6274abec475fd14dc1cb7bf303e228a1e35e940ada91187"},{"Name":"Chainguys\ud83d\udd13#6306 (Chainguys)","Languages":"Chinese Simplified","Translated (Words)":"282","Target Words":"454","Approved (Words)":"93","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"136","Joined":"2024-07-23 05:10:42","originalName":"Chainguys","id":15224042,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15224042/medium/011fd78005550eddac51f6cfc3fe7e1f.png","hashKey":"ce77198d1687f53373b6f880d04fe34ee9bc75c09881d6f5a6af9a7e1ff77f93"},{"Name":"TimeDao","Languages":"Chinese Simplified","Translated (Words)":"256","Target Words":"375","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"84","Joined":"2024-08-09 03:49:30","originalName":"TimeDao","id":16519049,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16519049/medium/60f14985b2bdb418e7ce738e487d9a57_default.png","hashKey":"73bc246d46635277fbd9da45b82e4f788e4c76e33e9042e159e99288c2e34ac5"},{"Name":"Seryoga_Leshii","Languages":"Russian","Translated (Words)":"103","Target Words":"102","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 06:11:56","originalName":"Seryoga_Leshii","id":15971811,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15971811/medium/b0249278d401d83e975717700b9bb97c_default.png","hashKey":"25827931047760c295ce924e682f6ec84c1b3c0d142584b26ce42e213d3b4841"},{"Name":"Alex IT-PROF (alex.it.prof)","Languages":"Russian","Translated (Words)":"98","Target Words":"102","Approved (Words)":"0","Voted":"5","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 13:24:48","originalName":"alex.it.prof","id":16112482,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16112482/medium/7131e7d0cca8b5ff3dad62aa44d4ff17.png","hashKey":"461d63d7d2e740b72a09b8bf7a7a32bfced5c6183527da67212eb867fda214ac"},{"Name":"Farzad Karimnejad (Shassi)","Languages":"Turkish","Translated (Words)":"83","Target Words":"74","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-25 14:34:10","originalName":"Shassi","id":16118658,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16118658/medium/aeb628c22bc6f299996e5260d6e20cbc.jpeg","hashKey":"43b06981e2d5d63a24e7e3494a35b388fc4cbf9e8128f7636462acbb26c1e39d"},{"Name":"77 (geceli922)","Languages":"Italian","Translated (Words)":"71","Target Words":"80","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-02-09 17:28:17","originalName":"geceli922","id":16227314,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16227314/medium/b9457025a042950c1e28307f6c00cf16.png","hashKey":"e8b43adb0e4ee7b08037be2ba356f688ff159c116fb7fb41e2461ff64c82ef80"},{"Name":"SolanaLeeky","Languages":"Japanese","Translated (Words)":"42","Target Words":"108","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-24 10:31:36","originalName":"SolanaLeeky","id":16386360,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16386360/medium/dd65f03412b22c3c04ec7b62b935d052_default.png","hashKey":"cc81c11886f0d07dde9426401217c6b6edf09a5e04246ff125c99b3917ac3da8"},{"Name":"Wei Chen (dayou5168)","Languages":"Chinese Simplified","Translated (Words)":"37","Target Words":"60","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-08 04:14:14","originalName":"dayou5168","id":16602857,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16602857/medium/22b9223ad812291b840b2be3005c8e1f.jpeg","hashKey":"87957964bb47724b4d72e65e06400204acb60ed8b530257cded53708469582dc"},{"Name":"\u0410\u043d\u043d\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u0430 (anutakisa1986)","Languages":"Russian","Translated (Words)":"18","Target Words":"18","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-12 15:06:57","originalName":"anutakisa1986","id":15385820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15385820/medium/f5ed014a13ca9cc17d16293341cbbbb5.png","hashKey":"2c526e1019cde76f63fb4cafed6cd221edbcba7eda20e27c594d53b71b31ab9f"},{"Name":"tradershort Contact me (tradershort)","Languages":"French","Translated (Words)":"16","Target Words":"18","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 09:56:51","originalName":"tradershort","id":15987401,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987401/medium/9f67a5985eb7eccab5e27bc4a0dd02e4.jpeg","hashKey":"54172b0afaee05a8e73ff243762691f80da22a8a78fb1bc240fcc7f3c3f75153"},{"Name":"\u041f\u0451\u0442\u0440 \u041f\u043b\u043e\u0441\u043a\u0438\u0445 (pittpv)","Languages":"Russian","Translated (Words)":"3","Target Words":"3","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"3","Joined":"2023-08-24 15:53:13","originalName":"pittpv","id":15981007,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15981007/medium/1a00533aa24f92793bc5e82650becb02.png","hashKey":"ded30e170534f5b35de63722bd3421bfde5d2d84b53e419778cca898af1fda0c"},{"Name":"Emil Fattakhov (emil_subspace)","Languages":"Russian","Translated (Words)":"2","Target Words":"3","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"2","Joined":"2023-08-31 10:36:55","originalName":"emil_subspace","id":15979195,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15979195/medium/93d6bcfbb2a6b3fd2a5735d486d1b3f9.jpeg","hashKey":"340815ee3d824cdcb7f9d491dfec3946b4dfb6d6a3cabfb16518e42b74eb3b85"},{"Name":"Jim Counter (jim.counter)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 06:02:56","originalName":"jim.counter","id":15987101,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987101/medium/3e91b59975679a3bf4fd2a017944cedf.png","hashKey":"46a26ffeba57247e53552bf536e3f29f3f410f7b2aedfd25fd1bc909b8959090"},{"Name":"soberyu333","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-06 06:21:07","originalName":"soberyu333","id":16358576,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16358576/medium/eddfeed3ccd3b6d62c792577734325c6.png","hashKey":"eed4a118093afee8a1c7d83d3e4f67f7f66c774665bda93077298d0343b0e4fe"},{"Name":"deJetStream (dejetstream)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 10:33:52","originalName":"dejetstream","id":16626611,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626611/medium/3ea5a8fe5e0fc47eba7e8f194e87ebd8.png","hashKey":"feee1fc6cdf10ab9b7863c392e029ad6f500ce2c3720b5ca51139948247907dc"},{"Name":"Littlebutts","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-04 19:49:41","originalName":"Littlebutts","id":16660463,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16660463/medium/ed959b9542997ff6fca4fca681c9b5e6_default.png","hashKey":"13929834d5fe4909330da19a45c0a2640aa0e29105212a25191d226ab57886ec"},{"Name":"REMOVED_USER","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-12 15:15:34"}]')}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4324],{14324:e=>{e.exports=JSON.parse('[{"Name":"Hendot (hendot13)","Languages":"Indonesian","Translated (Words)":"28827","Target Words":"27333","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-19 10:42:38","originalName":"hendot13","id":14937375,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14937375/medium/5b0f4f71323332d248d0dd7acc34aff2_default.png","hashKey":"6a3a0492dcd81daee7bb7ca47c2591dbab0771e3005ed27f0da742510ce97467"},{"Name":"Zulkis","Languages":"Russian","Translated (Words)":"28289","Target Words":"24996","Approved (Words)":"120","Voted":"9","\\"+\\" votes received":"4","\\"-\\" votes received":"0","Winning (Words)":"1999","Joined":"2023-12-08 10:54:56","originalName":"Zulkis","id":16135670,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16135670/medium/03a309565947a1aca6f4e134e61c3617.png","hashKey":"25dedda94216dd93b93fa5beb19c774f7dfe49b49aa87e216ff4ff5a3e99b184"},{"Name":"BlueDog","Languages":"Italian","Translated (Words)":"23150","Target Words":"24239","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-07 18:36:26","originalName":"BlueDog","id":16361068,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16361068/medium/f3ee84d16fb71ebab5d52910db333ab0.jpeg","hashKey":"fca800e4917a402b1ad93b5054ca05589399cdcf167ac8f00242528769e11947"},{"Name":"z W (ooplay)","Languages":"Chinese Simplified","Translated (Words)":"19193","Target Words":"28814","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"619","Joined":"2023-09-13 13:08:12","originalName":"ooplay","id":16008847,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16008847/medium/0c57c51d6c54a8560f99d567fc27c611.jpeg","hashKey":"c664fcb7081dc4e677ef54ee7b1a71332a0a7a3045427277b52fbe3b0d3eecf2"},{"Name":"wei chen (wei.chen.cg)","Languages":"Chinese Simplified","Translated (Words)":"16903","Target Words":"25991","Approved (Words)":"19154","Voted":"6","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"15777","Joined":"2024-10-08 04:44:08","originalName":"wei.chen.cg","id":16337820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337820/medium/cf504631ac9b0891027ab58b28e8cf71.jpeg","hashKey":"cf523dc09d1b9af83878a5e954591da8215b671a559fa7161abf5771bc205914"},{"Name":"Scorpio2017","Languages":"Russian","Translated (Words)":"14126","Target Words":"12886","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"1","\\"-\\" votes received":"7","Winning (Words)":"2560","Joined":"2023-08-20 16:43:28","originalName":"Scorpio2017","id":15974887,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15974887/medium/72302ffbe059e483a9e68286d2c27d4e.jpg","hashKey":"58309e779828e01397748a49ba7bee12e17eb789057c637351ff4fd8d45f73b6"},{"Name":"Giorge Abdala (giorgeabdala)","Languages":"Portuguese","Translated (Words)":"11504","Target Words":"12131","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-24 10:41:45","originalName":"giorgeabdala","id":15140308,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15140308/medium/b2595687225584dbc2ca8ddcb4fca965_default.png","hashKey":"969ec702d38bd5c3beb461177d41dddcd60fa0b0efaeb8fbffc7fac138ddf390"},{"Name":"\u83dccc (caixiaoguang110)","Languages":"Chinese Simplified","Translated (Words)":"11401","Target Words":"17237","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"720","Joined":"2024-11-11 01:50:12","originalName":"caixiaoguang110","id":16672231,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16672231/medium/e1c3eeb04b78c0cbf752824c855f7868.jpeg","hashKey":"d3dedcd89887d774ff4db0c707463c303c00bced675cbf2706b2eda13e59c4cb"},{"Name":"beyraandrade","Languages":"Spanish","Translated (Words)":"9885","Target Words":"11076","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 17:44:10","originalName":"beyraandrade","id":16626689,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626689/medium/365a57e8ae1753b8b5986dcc8c7de156_default.png","hashKey":"5ef6b1722e8982310f5a000c3db6dac5071137525088ef706163bc8861303de6"},{"Name":"megamozg","Languages":"Ukrainian; Russian","Translated (Words)":"9179","Target Words":"8592","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"2","\\"-\\" votes received":"0","Winning (Words)":"90","Joined":"2023-10-13 12:33:28","originalName":"megamozg","id":16052146,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16052146/medium/5825d4cf8f7c4e40e0b91337ec41511d.jpg","hashKey":"6a58a13c15407e7eb8e24d95242148aba2f14f4f78892465ea0fdea1c5e401f2"},{"Name":"Baran \xc7evik (callmebaraan)","Languages":"Turkish","Translated (Words)":"9101","Target Words":"8409","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"714","Joined":"2024-10-13 06:56:54","originalName":"callmebaraan","id":16624679,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624679/medium/486db993f1e3f8fb005ef747c0bcccde.png","hashKey":"5f4acc8e847d98e21095704aeb13fa9b56309818f6a499751a67e2cec0d9caae"},{"Name":"Matthias Rust (Luckysprite)","Languages":"German","Translated (Words)":"5749","Target Words":"5768","Approved (Words)":"5758","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"5711","Joined":"2024-07-21 02:04:11","originalName":"Luckysprite","id":16481853,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16481853/medium/600cf46f8eb1e2c78f1a61d1720e2707.png","hashKey":"aa3cba62fa0395b1ba04a0ad7e8ccc113c69685e36ec3da12365ba07f83d27e2"},{"Name":"Wedding Eknopka (cryptan)","Languages":"Ukrainian","Translated (Words)":"5041","Target Words":"4583","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"132","Joined":"2023-10-30 14:41:01","originalName":"cryptan","id":16079614,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16079614/medium/7efbf58e91149c399d561e610e24d1fc.png","hashKey":"2a7693598f6e181b5aa8079d46d20c61c005bccef7faa182730a94ff5be4580f"},{"Name":"Fan MOZG (kievmozg)","Languages":"Ukrainian","Translated (Words)":"4689","Target Words":"4275","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"325","Joined":"2023-10-27 13:39:14","originalName":"kievmozg","id":16074676,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16074676/medium/fb36ff367bc6af6d8a9b32a7393d02b3.png","hashKey":"7c4686044b716bb883c2e51f6967a0607021a40a7d2a0bd5af625a974a8d79b5"},{"Name":"StrowDeATh","Languages":"Spanish","Translated (Words)":"4652","Target Words":"5045","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"4319","Joined":"2023-08-20 23:44:36","originalName":"StrowDeATh","id":14942527,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/14942527/medium/8a7fe9c38c906fa840b3aa257cf073e8.jpg","hashKey":"21734af256e326baa1d64904abbe4f9548bd13090e9faaa030f6db7575437297"},{"Name":"Mystery men#1921 (Mystery_men)","Languages":"Chinese Simplified","Translated (Words)":"4467","Target Words":"6800","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"7","Joined":"2024-09-30 22:36:20","originalName":"Mystery_men","id":15388574,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15388574/medium/0a06dcbc726145f3748cc73dac3445a3.jpg","hashKey":"9fbe3c5744836f498982f92758a4c2be19cf5d9a4ab6fc6061e2afd23d7e612c"},{"Name":"bingbang (bingbank)","Languages":"French","Translated (Words)":"3559","Target Words":"3990","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 15:19:20","originalName":"bingbank","id":16480389,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16480389/medium/f7ad6ee1cf7826308121aed83ffa410e.jpeg","hashKey":"fb659f826097a377d8b37a73e401bd8e7ee0241d2b2e2568173256dbd22458f5"},{"Name":"Dima Zadorozhny (Dmitryzd)","Languages":"Russian","Translated (Words)":"3523","Target Words":"3133","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"15","Joined":"2023-11-15 12:32:48","originalName":"Dmitryzd","id":16104582,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16104582/medium/9f1092113c662170dcf0517f4857632f.jpeg","hashKey":"71b6acdce2552558ef15716b133020ad4b4a8c4fe8373898f496ceca4e4fc401"},{"Name":"Tech Web3 (web3crypto)","Languages":"Ukrainian","Translated (Words)":"3402","Target Words":"2926","Approved (Words)":"0","Voted":"2","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-14 07:32:41","originalName":"web3crypto","id":16053210,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16053210/medium/747d6db2a69ccf1a4b6990e548ce0879.png","hashKey":"d8df32f8396ed231827b58c2da47f1c900f59fec98bf152bc45f42bddbdc128c"},{"Name":"Y L (Fatman13)","Languages":"Chinese Simplified","Translated (Words)":"3401","Target Words":"5068","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"517","Joined":"2024-04-25 22:28:30","originalName":"Fatman13","id":16337966,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16337966/medium/a57d1b69173c1adb141f441fb46f5fea.jpeg","hashKey":"aeae02909ea5dc7902fa6419174691821ab725aa8ccb7d573cd4d84d1014f14e"},{"Name":"oaigoodman","Languages":"Vietnamese","Translated (Words)":"2937","Target Words":"4294","Approved (Words)":"0","Voted":"2","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-16 06:26:11","originalName":"oaigoodman","id":16329256,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16329256/medium/dfb55ff7711309c0240c39ac792580b0.png","hashKey":"80189face3ff5a1bedbf14b32e6c0c499bee5518d096bb8c783d93d0a0d6f453"},{"Name":"\u041a\u0438\u0440\u0438\u043b\u043b \u0422\u0440\u043e\u044f\u043d (PurpleMoney)","Languages":"Russian","Translated (Words)":"2533","Target Words":"2311","Approved (Words)":"0","Voted":"9","\\"+\\" votes received":"1","\\"-\\" votes received":"0","Winning (Words)":"1339","Joined":"2023-08-30 18:47:31","originalName":"PurpleMoney","id":15495550,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15495550/medium/efe552d35615936c1c0f624462db1ac7.png","hashKey":"49d51559b3fd8799e78668062248008c786ed9b8a0cc29f619e4726ad41f80bd"},{"Name":"Captainclogs","Languages":"Indonesian; English","Translated (Words)":"2477","Target Words":"2364","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-12-14 00:29:22","originalName":"Captainclogs","id":16142762,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16142762/medium/c156acc967bef46d9a624b54405825e0.jpg","hashKey":"a9b581a474fb0caa90c2a5546274082196813299991d91bf3f2936919e510747"},{"Name":"Shushu (degenshushu)","Languages":"Chinese Simplified","Translated (Words)":"2004","Target Words":"3341","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"1822","Joined":"2024-10-12 23:26:29","originalName":"degenshushu","id":16624347,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16624347/medium/84d14c33d8d0dccfca727a548bd52f8d.png","hashKey":"0a42b5746d853a0a654fe7e1b59fa0a7bc2dc5a01b70193abd695a30033a8020"},{"Name":"DarienRahl","Languages":"Polish","Translated (Words)":"1618","Target Words":"1513","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-04-29 22:40:56","originalName":"DarienRahl","id":16325736,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16325736/medium/04198c97b88144b1510a6fcafe43fbaf.jpeg","hashKey":"e7acbe0101d867d4a642166c28adbfb7540a270f88319063f6cc58b0ca700da2"},{"Name":"KPD","Languages":"Hindi","Translated (Words)":"1372","Target Words":"2550","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-09-07 04:07:32","originalName":"KPD","id":15726675,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15726675/medium/a5e65fd9622b862b7aec1f4ac7b975bb_default.png","hashKey":"9138e6b3809eabcd42eff352026f1d0f7ac224e75cc0a7bd8585941ae2e43fcb"},{"Name":"Andr\xe9 Lopes (frammeDeveloper)","Languages":"Portuguese","Translated (Words)":"816","Target Words":"894","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-04 21:20:00","originalName":"frammeDeveloper","id":16610749,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16610749/medium/e3586645259b084a86b5076e75295722.png","hashKey":"5e2a584970183bbd3fe265108c9b2012db445eedc6bd7bb464766ad6c89448cc"},{"Name":"moke33","Languages":"Chinese Simplified","Translated (Words)":"759","Target Words":"1266","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"1","Joined":"2024-03-31 22:27:09","originalName":"moke33","id":16305788,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16305788/medium/60493ca31a2468213fb641aa9b3b9632_default.png","hashKey":"91f9222b1f8c78e1fbd84a47f0d0abf154ff5bcb1034fc1dd8c1378129078876"},{"Name":"NakoTurk","Languages":"Turkish","Translated (Words)":"752","Target Words":"724","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 05:58:05","originalName":"NakoTurk","id":15438770,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15438770/medium/42cbec12b27742485607c70176f111cb.png","hashKey":"8420c8df6ecbf3df5f5d68edd0315a0f65b792712deed0dfe06aaa10e00a40f5"},{"Name":"Emil F (Emilios)","Languages":"Russian","Translated (Words)":"695","Target Words":"576","Approved (Words)":"0","Voted":"1","\\"+\\" votes received":"1","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-10-09 13:49:08","originalName":"Emilios","id":15396634,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15396634/medium/f670f74b21acf4522325bb271b212b83.jpg","hashKey":"722800bda5080768582a9e2f1e7e03ca4158cecfc33b39fc247f1d41a297ca98"},{"Name":"Yurii Bukshuk (Yurally)","Languages":"Ukrainian","Translated (Words)":"587","Target Words":"507","Approved (Words)":"0","Voted":"3","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-13 11:59:11","originalName":"Yurally","id":15386666,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386666/medium/c21c82ad1697a0923faa0ab6ca255281.JPG","hashKey":"491365ea399c34c45ac4c7f41be2bbd637100f36f77f03833e475c2fbb5d6619"},{"Name":"DragonChris","Languages":"Chinese Simplified","Translated (Words)":"515","Target Words":"814","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"188","Joined":"2024-11-06 00:44:12","originalName":"DragonChris","id":16662325,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16662325/medium/e2f471c82e122e875b509de0c4fcfb8a_default.png","hashKey":"19c002ff588293f145194afd7679c7175209db467772816124ab00fe85fb83b5"},{"Name":"Nirnaeth (nirnaeth-arnoediad)","Languages":"Turkish","Translated (Words)":"492","Target Words":"435","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-06 05:38:35","originalName":"nirnaeth-arnoediad","id":15386992,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15386992/medium/c451aabc75b1681b3d948de3499e7794.png","hashKey":"c038aaf1b82676e49d0e1e87374c2b1bc3000ba863c9b0f410a4d425411be2a1"},{"Name":"ratatuj","Languages":"Russian","Translated (Words)":"480","Target Words":"454","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-02 14:40:31","originalName":"ratatuj","id":16607033,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16607033/medium/6b25fea2d35384f5a15691fb60a9debd_default.png","hashKey":"1704872ae70e6eae8002aadbc8eec45014d394393bfffa7aa04c074950ebb0ae"},{"Name":"Shuyong Yang (shuyong.yang)","Languages":"Chinese Simplified; Turkish","Translated (Words)":"313","Target Words":"367","Approved (Words)":"1726","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"255","Joined":"2024-10-11 21:01:41","originalName":"shuyong.yang","id":16612105,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16612105/medium/c09fdff2006a5265e62264af6289445a.png","hashKey":"1d4c0bc5f047f6a2b6274abec475fd14dc1cb7bf303e228a1e35e940ada91187"},{"Name":"Chainguys\ud83d\udd13#6306 (Chainguys)","Languages":"Chinese Simplified","Translated (Words)":"282","Target Words":"454","Approved (Words)":"93","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"136","Joined":"2024-07-23 05:10:42","originalName":"Chainguys","id":15224042,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15224042/medium/011fd78005550eddac51f6cfc3fe7e1f.png","hashKey":"ce77198d1687f53373b6f880d04fe34ee9bc75c09881d6f5a6af9a7e1ff77f93"},{"Name":"TimeDao","Languages":"Chinese Simplified","Translated (Words)":"256","Target Words":"375","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"84","Joined":"2024-08-09 03:49:30","originalName":"TimeDao","id":16519049,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16519049/medium/60f14985b2bdb418e7ce738e487d9a57_default.png","hashKey":"73bc246d46635277fbd9da45b82e4f788e4c76e33e9042e159e99288c2e34ac5"},{"Name":"Seryoga_Leshii","Languages":"Russian","Translated (Words)":"103","Target Words":"102","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-18 06:11:56","originalName":"Seryoga_Leshii","id":15971811,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15971811/medium/b0249278d401d83e975717700b9bb97c_default.png","hashKey":"25827931047760c295ce924e682f6ec84c1b3c0d142584b26ce42e213d3b4841"},{"Name":"Alex IT-PROF (alex.it.prof)","Languages":"Russian","Translated (Words)":"98","Target Words":"102","Approved (Words)":"0","Voted":"5","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-22 13:24:48","originalName":"alex.it.prof","id":16112482,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16112482/medium/7131e7d0cca8b5ff3dad62aa44d4ff17.png","hashKey":"461d63d7d2e740b72a09b8bf7a7a32bfced5c6183527da67212eb867fda214ac"},{"Name":"Farzad Karimnejad (Shassi)","Languages":"Turkish","Translated (Words)":"83","Target Words":"74","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-11-25 14:34:10","originalName":"Shassi","id":16118658,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16118658/medium/aeb628c22bc6f299996e5260d6e20cbc.jpeg","hashKey":"43b06981e2d5d63a24e7e3494a35b388fc4cbf9e8128f7636462acbb26c1e39d"},{"Name":"77 (geceli922)","Languages":"Italian","Translated (Words)":"71","Target Words":"80","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-02-09 17:28:17","originalName":"geceli922","id":16227314,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16227314/medium/b9457025a042950c1e28307f6c00cf16.png","hashKey":"e8b43adb0e4ee7b08037be2ba356f688ff159c116fb7fb41e2461ff64c82ef80"},{"Name":"SolanaLeeky","Languages":"Japanese","Translated (Words)":"42","Target Words":"108","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-24 10:31:36","originalName":"SolanaLeeky","id":16386360,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16386360/medium/dd65f03412b22c3c04ec7b62b935d052_default.png","hashKey":"cc81c11886f0d07dde9426401217c6b6edf09a5e04246ff125c99b3917ac3da8"},{"Name":"Wei Chen (dayou5168)","Languages":"Chinese Simplified","Translated (Words)":"37","Target Words":"60","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-08 04:14:14","originalName":"dayou5168","id":16602857,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16602857/medium/22b9223ad812291b840b2be3005c8e1f.jpeg","hashKey":"87957964bb47724b4d72e65e06400204acb60ed8b530257cded53708469582dc"},{"Name":"\u0410\u043d\u043d\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u0430 (anutakisa1986)","Languages":"Russian","Translated (Words)":"18","Target Words":"18","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-07-12 15:06:57","originalName":"anutakisa1986","id":15385820,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15385820/medium/f5ed014a13ca9cc17d16293341cbbbb5.png","hashKey":"2c526e1019cde76f63fb4cafed6cd221edbcba7eda20e27c594d53b71b31ab9f"},{"Name":"tradershort Contact me (tradershort)","Languages":"French","Translated (Words)":"16","Target Words":"18","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 09:56:51","originalName":"tradershort","id":15987401,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987401/medium/9f67a5985eb7eccab5e27bc4a0dd02e4.jpeg","hashKey":"54172b0afaee05a8e73ff243762691f80da22a8a78fb1bc240fcc7f3c3f75153"},{"Name":"\u041f\u0451\u0442\u0440 \u041f\u043b\u043e\u0441\u043a\u0438\u0445 (pittpv)","Languages":"Russian","Translated (Words)":"3","Target Words":"3","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"3","Joined":"2023-08-24 15:53:13","originalName":"pittpv","id":15981007,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15981007/medium/1a00533aa24f92793bc5e82650becb02.png","hashKey":"ded30e170534f5b35de63722bd3421bfde5d2d84b53e419778cca898af1fda0c"},{"Name":"Emil Fattakhov (emil_subspace)","Languages":"Russian","Translated (Words)":"2","Target Words":"3","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"2","Joined":"2023-08-31 10:36:55","originalName":"emil_subspace","id":15979195,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15979195/medium/93d6bcfbb2a6b3fd2a5735d486d1b3f9.jpeg","hashKey":"340815ee3d824cdcb7f9d491dfec3946b4dfb6d6a3cabfb16518e42b74eb3b85"},{"Name":"Jim Counter (jim.counter)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2023-08-29 06:02:56","originalName":"jim.counter","id":15987101,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/15987101/medium/3e91b59975679a3bf4fd2a017944cedf.png","hashKey":"46a26ffeba57247e53552bf536e3f29f3f410f7b2aedfd25fd1bc909b8959090"},{"Name":"soberyu333","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-05-06 06:21:07","originalName":"soberyu333","id":16358576,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16358576/medium/eddfeed3ccd3b6d62c792577734325c6.png","hashKey":"eed4a118093afee8a1c7d83d3e4f67f7f66c774665bda93077298d0343b0e4fe"},{"Name":"deJetStream (dejetstream)","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-10-14 10:33:52","originalName":"dejetstream","id":16626611,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16626611/medium/3ea5a8fe5e0fc47eba7e8f194e87ebd8.png","hashKey":"feee1fc6cdf10ab9b7863c392e029ad6f500ce2c3720b5ca51139948247907dc"},{"Name":"Littlebutts","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-04 19:49:41","originalName":"Littlebutts","id":16660463,"avatarUrl":"https://crowdin-static.downloads.crowdin.com/avatar/16660463/medium/ed959b9542997ff6fca4fca681c9b5e6_default.png","hashKey":"13929834d5fe4909330da19a45c0a2640aa0e29105212a25191d226ab57886ec"},{"Name":"REMOVED_USER","Languages":"","Translated (Words)":"0","Target Words":"0","Approved (Words)":"0","Voted":"0","\\"+\\" votes received":"0","\\"-\\" votes received":"0","Winning (Words)":"0","Joined":"2024-11-12 15:15:34"}]')}}]); \ No newline at end of file diff --git a/assets/js/45e84c8a.76183afa.js b/assets/js/45e84c8a.76183afa.js deleted file mode 100644 index 49b25b32132..00000000000 --- a/assets/js/45e84c8a.76183afa.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7755],{13726:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>a});var o=n(74848),i=n(28453);const s={title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},r="How to Contribute!",l={id:"participate/contribute/intro",title:"Getting started",description:"How to contribute to the Autonomys Docs",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/intro.md",sourceDirName:"participate/contribute",slug:"/participate/contribute/intro",permalink:"/participate/contribute/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/participate/contribute/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},sidebar:"tutorialSidebar",previous:{title:"Nova Block Explorer",permalink:"/develop/nova/block-explorer"},next:{title:"Code of Conduct",permalink:"/participate/contribute/code-of-conduct"}},c={},a=[{value:"You Rock!",id:"you-rock",level:3},{value:"Help us, Help you, Help us!",id:"help-us-help-you-help-us",level:3},{value:"What Can I Contribute?",id:"what-can-i-contribute",level:3},{value:"Simple Fix",id:"simple-fix",level:2},{value:"Never contributed before?",id:"never-contributed-before",level:2},{value:"Advanced Fix",id:"advanced-fix",level:2}];function u(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"how-to-contribute",children:"How to Contribute!"})}),"\n",(0,o.jsx)(t.h3,{id:"you-rock",children:"You Rock!"}),"\n",(0,o.jsx)(t.p,{children:"First off, thank you for considering contributing to the Autonomys Network. It's through the amazing collaboration of people like yourself that truly makes the open source community amazing. \u2764\ufe0f"}),"\n",(0,o.jsx)(t.h3,{id:"help-us-help-you-help-us",children:"Help us, Help you, Help us!"}),"\n",(0,o.jsx)(t.p,{children:"Following these guidelines shows that you respect the time of the developers who manage and develop this open source project. In return, they should reciprocate that respect by addressing your issue, assessing changes, and helping you finalize your pull requests."}),"\n",(0,o.jsx)(t.h3,{id:"what-can-i-contribute",children:"What Can I Contribute?"}),"\n",(0,o.jsx)(t.p,{children:"We are a fully open source project, meaning we are open to all kinds of contributions from our community. Here are a few examples of contributions that we are open to:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Added Content:"})," Writing a nice guide? Submit it on the ",(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/guides-and-faqs/13",children:"forum guides"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Bug Reports & Fixes:"})," Find a bug or error? Let us know where it's hiding. Report it at the ",(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/support/5",children:"support forum"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Feature Requests & Implementations:"})," Looking for a new feature? Share your ideas so we can improve."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsxs)(t.em,{children:["If you have something that is not listed, try to be as descriptive as possible and feel free to submit the ",(0,o.jsx)(t.a,{href:"https://github.com/autonomys/subspace-docs/pulls",children:"pull request"}),"."]})}),"\n",(0,o.jsx)(t.h1,{id:"ground-rules",children:"Ground Rules"}),"\n",(0,o.jsxs)(t.p,{children:["Please refer to our ",(0,o.jsx)(t.a,{href:"/participate/contribute/code-of-conduct",children:"Code of Conduct"}),"."]}),"\n",(0,o.jsx)(t.h1,{id:"your-first-contribution",children:"Your First Contribution"}),"\n",(0,o.jsx)(t.h2,{id:"simple-fix",children:"Simple Fix"}),"\n",(0,o.jsxs)(t.p,{children:["Please follow this pathway for ",(0,o.jsx)(t.em,{children:"minor"})," contributions such as spelling errors, typos, rewording, etc."]}),"\n",(0,o.jsxs)(t.blockquote,{children:["\n",(0,o.jsxs)(t.p,{children:["If you are adding entirely new pages, features, etc, then please refer to the ",(0,o.jsx)(t.code,{children:"Advanced"})," portion of this section."]}),"\n"]}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["Go to the ",(0,o.jsx)(t.a,{href:"https://docs.autonomys.xyz",children:"Autonomys Documentation"}),", and find the page that you would like to change."]}),"\n",(0,o.jsxs)(t.li,{children:["Scroll to the bottom and click ",(0,o.jsx)(t.code,{children:"Edit this page"}),"."]}),"\n",(0,o.jsx)(t.li,{children:"This will open up GitHub, and direct you to the raw page on GitHub."}),"\n",(0,o.jsxs)(t.li,{children:["In the top right click the ",(0,o.jsx)(t.code,{children:"pencil"})," emoji to edit the page."]}),"\n",(0,o.jsx)(t.li,{children:"GitHub will change the page to a text editor, where you will be able to make changes."}),"\n",(0,o.jsxs)(t.li,{children:["Once you are satisfied with your changes, scroll to the bottom and fill out the following fields.","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Fill out Title"}),"\n",(0,o.jsx)(t.li,{children:"Fill out Description"}),"\n",(0,o.jsxs)(t.li,{children:["Click the ",(0,o.jsx)(t.code,{children:"Create a new branch for this commit and start a pull request."})," option"]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["Click ",(0,o.jsx)(t.code,{children:"Propose Changes"})]}),"\n",(0,o.jsxs)(t.li,{children:["On the right you will see some options, you will want to apply the most accurate ",(0,o.jsx)(t.code,{children:"labels"})," listed."]}),"\n",(0,o.jsxs)(t.li,{children:["Click ",(0,o.jsx)(t.code,{children:"Create Pull Request"})]}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["\ud83c\udf89Congratulations! You have just submitted your first pull request!\n",(0,o.jsx)(t.em,{children:"Please provide some time for a maintainer to view your pull request and approve it, or request adjustments."})]}),"\n",(0,o.jsx)(t.h2,{id:"never-contributed-before",children:"Never contributed before?"}),"\n",(0,o.jsx)(t.p,{children:"No worries! We all start somewhere \ud83d\ude80 There are several videos and resources online to show various ways to use GitHub.\nCheck out some of these amazing guides to help get you familiar with GitHub and contributing."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions",children:"First Contributions - Terminal"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions/blob/master/gui-tool-tutorials/github-desktop-tutorial.md",children:"First Contributions - GitHub Desktop"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github",children:"How to Contribute to an Open Source Project on GitHub"})}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"advanced-fix",children:"Advanced Fix"}),"\n",(0,o.jsx)(t.p,{children:"This section presumes a better understanding of GitHub, and programming basics."}),"\n",(0,o.jsx)(t.p,{children:"For larger, more advanced fixes please ensure you follow the basic principles below."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Do ",(0,o.jsx)(t.strong,{children:"not"})," comment simple trivial code such as importing existing components, and basic HTML/CSS."]}),"\n",(0,o.jsx)(t.li,{children:"Do comment on complex non-trivial code, complex logic should be easy to understand."}),"\n",(0,o.jsx)(t.li,{children:"All public functions need to be commented."}),"\n",(0,o.jsx)(t.li,{children:"If code is trivial but could be forgotten over time, please comment."}),"\n",(0,o.jsx)(t.li,{children:"Try and think about your code from a 3rd person view, it should make sense to anyone with a similar background in the technology that you are using."}),"\n",(0,o.jsx)(t.li,{children:"Sometimes difficult to understand code needs refactoring instead of more comments."}),"\n",(0,o.jsx)(t.li,{children:"Make sure the program can still build prior to pull request."}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"For advanced fixes you should follow the general pathway for GitHub."}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["Create your own fork of the code.\n",(0,o.jsx)(t.img,{alt:"Fork",src:n(63563).A+"",width:"1187",height:"177"})]}),"\n",(0,o.jsx)(t.li,{children:"Do the changes locally on your system in your preferred development environment."}),"\n",(0,o.jsxs)(t.li,{children:["Following the README.md instructions, test your changes locally with ",(0,o.jsx)(t.code,{children:"yarn build"})," and ",(0,o.jsx)(t.code,{children:"yarn run serve"})," or ",(0,o.jsx)(t.code,{children:"npm build"})," and ",(0,o.jsx)(t.code,{children:"npm run serve"})," to ensure there are no clear issues."]}),"\n",(0,o.jsxs)(t.li,{children:["Push the changes to your fork and submit a pull request by comparing across forks.\n",(0,o.jsx)(t.img,{alt:"Submit Pull Request",src:n(46793).A+"",width:"1016",height:"270"})]}),"\n"]}),"\n",(0,o.jsx)(t.h1,{id:"how-to-report-a-bug-or-error",children:"How to report a bug or error"}),"\n",(0,o.jsx)(t.p,{children:"We do not have any strict template that you must follow, but please provide all required information so we can quickly resolve any issues."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["If you find an actual programming bug, please submit a GitHub issue and use the label ",(0,o.jsx)(t.code,{children:"bug"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:["If you find a grammar/spelling/content error, please submit a GitHub issue and use the label ",(0,o.jsx)(t.code,{children:"documentation"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.h1,{id:"how-to-suggest-a-feature-or-enhancement",children:"How to suggest a feature or enhancement"}),"\n",(0,o.jsx)(t.p,{children:"This documentation is for the community, so any feature requests are welcome."}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["If you are requesting a feature, please submit a GitHub issue and use the label ",(0,o.jsx)(t.code,{children:"enhancement"}),"."]}),"\n",(0,o.jsx)(t.li,{children:"Explain why this issue is needed, and what problems it will solve."}),"\n",(0,o.jsx)(t.li,{children:"Indicate if you are able/willing to help implement this feature."}),"\n"]}),"\n",(0,o.jsx)(t.h1,{id:"code-review-process",children:"Code review process"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"The core team will take a look at any pull requests as soon as possible, generally you can expect a response within a day or two."}),"\n",(0,o.jsx)(t.li,{children:"If it is a simple and non-controversial fix we will review the code and approve."}),"\n",(0,o.jsx)(t.li,{children:"If there are questions, feedback, or more discussion needs to be had we will reach out to the contributor on the Pull Request to try and resolve said issues."}),"\n",(0,o.jsx)(t.li,{children:"If there is no response or activity within 2 weeks of team response we may close the pull request."}),"\n"]}),"\n",(0,o.jsx)(t.h1,{id:"community",children:"Community"}),"\n",(0,o.jsxs)(t.p,{children:["You can chat with the core team on Discord ",(0,o.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:"https://autonomys.xyz/discord"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},63563:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/Fork_Instructions-942684d8fe9aef010d18c69aeb9de70e.png"},46793:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/Submit_Pull-2bfa788eff3c3decb57e18d3a6af8957.png"},28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>l});var o=n(96540);const i={},s=o.createContext(i);function r(e){const t=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/tr/assets/js/69a72439.bcc5b31b.js b/assets/js/45e84c8a.8b0d16c6.js similarity index 89% rename from tr/assets/js/69a72439.bcc5b31b.js rename to assets/js/45e84c8a.8b0d16c6.js index 8df7a2d7c7c..d70da022f2a 100644 --- a/tr/assets/js/69a72439.bcc5b31b.js +++ b/assets/js/45e84c8a.8b0d16c6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[370],{90579:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>a});var n=o(74848),i=o(28453);const s={title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},r="How to Contribute!",l={id:"participate/contribute/intro",title:"Getting started",description:"How to contribute to the Autonomys Docs",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/participate/contribute/intro.md",sourceDirName:"participate/contribute",slug:"/participate/contribute/intro",permalink:"/tr/participate/contribute/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/participate/contribute/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},sidebar:"tutorialSidebar",previous:{title:"Nova Block Explorer",permalink:"/tr/develop/nova/block-explorer"},next:{title:"Code of Conduct",permalink:"/tr/participate/contribute/code-of-conduct"}},c={},a=[{value:"You Rock!",id:"you-rock",level:3},{value:"Help us, Help you, Help us!",id:"help-us-help-you-help-us",level:3},{value:"What Can I Contribute?",id:"what-can-i-contribute",level:3},{value:"Simple Fix",id:"simple-fix",level:2},{value:"Never contributed before?",id:"never-contributed-before",level:2},{value:"Advanced Fix",id:"advanced-fix",level:2}];function u(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"how-to-contribute",children:"How to Contribute!"})}),"\n",(0,n.jsx)(t.h3,{id:"you-rock",children:"You Rock!"}),"\n",(0,n.jsx)(t.p,{children:"First off, thank you for considering contributing to the Autonomys Network. It's through the amazing collaboration of people like yourself that truly makes the open source community amazing. \u2764\ufe0f"}),"\n",(0,n.jsx)(t.h3,{id:"help-us-help-you-help-us",children:"Help us, Help you, Help us!"}),"\n",(0,n.jsx)(t.p,{children:"Following these guidelines shows that you respect the time of the developers who manage and develop this open source project. In return, they should reciprocate that respect by addressing your issue, assessing changes, and helping you finalize your pull requests."}),"\n",(0,n.jsx)(t.h3,{id:"what-can-i-contribute",children:"What Can I Contribute?"}),"\n",(0,n.jsx)(t.p,{children:"We are a fully open source project, meaning we are open to all kinds of contributions from our community. Here are a few examples of contributions that we are open to:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Added Content:"})," Writing a nice guide? Submit it on the ",(0,n.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/guides-and-faqs/13",children:"forum guides"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Bug Reports & Fixes:"})," Find a bug or error? Let us know where it's hiding. Report it at the ",(0,n.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/support/5",children:"support forum"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Feature Requests & Implementations:"})," Looking for a new feature? Share your ideas so we can improve."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.em,{children:["If you have something that is not listed, try to be as descriptive as possible and feel free to submit the ",(0,n.jsx)(t.a,{href:"https://github.com/autonomys/subspace-docs/pulls",children:"pull request"}),"."]})}),"\n",(0,n.jsx)(t.h1,{id:"ground-rules",children:"Ground Rules"}),"\n",(0,n.jsxs)(t.p,{children:["Please refer to our ",(0,n.jsx)(t.a,{href:"/participate/contribute/code-of-conduct",children:"Code of Conduct"}),"."]}),"\n",(0,n.jsx)(t.h1,{id:"your-first-contribution",children:"Your First Contribution"}),"\n",(0,n.jsx)(t.h2,{id:"simple-fix",children:"Simple Fix"}),"\n",(0,n.jsxs)(t.p,{children:["Please follow this pathway for ",(0,n.jsx)(t.em,{children:"minor"})," contributions such as spelling errors, typos, rewording, etc."]}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:["If you are adding entirely new pages, features, etc, then please refer to the ",(0,n.jsx)(t.code,{children:"Advanced"})," portion of this section."]}),"\n"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Go to the ",(0,n.jsx)(t.a,{href:"https://docs.autonomys.xyz",children:"Autonomys Documentation"}),", and find the page that you would like to change."]}),"\n",(0,n.jsxs)(t.li,{children:["Scroll to the bottom and click ",(0,n.jsx)(t.code,{children:"Edit this page"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"This will open up GitHub, and direct you to the raw page on GitHub."}),"\n",(0,n.jsxs)(t.li,{children:["In the top right click the ",(0,n.jsx)(t.code,{children:"pencil"})," emoji to edit the page."]}),"\n",(0,n.jsx)(t.li,{children:"GitHub will change the page to a text editor, where you will be able to make changes."}),"\n",(0,n.jsxs)(t.li,{children:["Once you are satisfied with your changes, scroll to the bottom and fill out the following fields.","\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Fill out Title"}),"\n",(0,n.jsx)(t.li,{children:"Fill out Description"}),"\n",(0,n.jsxs)(t.li,{children:["Click the ",(0,n.jsx)(t.code,{children:"Create a new branch for this commit and start a pull request."})," option"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["Click ",(0,n.jsx)(t.code,{children:"Propose Changes"})]}),"\n",(0,n.jsxs)(t.li,{children:["On the right you will see some options, you will want to apply the most accurate ",(0,n.jsx)(t.code,{children:"labels"})," listed."]}),"\n",(0,n.jsxs)(t.li,{children:["Click ",(0,n.jsx)(t.code,{children:"Create Pull Request"})]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["\ud83c\udf89Congratulations! You have just submitted your first pull request!\n",(0,n.jsx)(t.em,{children:"Please provide some time for a maintainer to view your pull request and approve it, or request adjustments."})]}),"\n",(0,n.jsx)(t.h2,{id:"never-contributed-before",children:"Never contributed before?"}),"\n",(0,n.jsx)(t.p,{children:"No worries! We all start somewhere \ud83d\ude80 There are several videos and resources online to show various ways to use GitHub.\nCheck out some of these amazing guides to help get you familiar with GitHub and contributing."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions",children:"First Contributions - Terminal"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions/blob/master/gui-tool-tutorials/github-desktop-tutorial.md",children:"First Contributions - GitHub Desktop"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github",children:"How to Contribute to an Open Source Project on GitHub"})}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"advanced-fix",children:"Advanced Fix"}),"\n",(0,n.jsx)(t.p,{children:"This section presumes a better understanding of GitHub, and programming basics."}),"\n",(0,n.jsx)(t.p,{children:"For larger, more advanced fixes please ensure you follow the basic principles below."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Do ",(0,n.jsx)(t.strong,{children:"not"})," comment simple trivial code such as importing existing components, and basic HTML/CSS."]}),"\n",(0,n.jsx)(t.li,{children:"Do comment on complex non-trivial code, complex logic should be easy to understand."}),"\n",(0,n.jsx)(t.li,{children:"All public functions need to be commented."}),"\n",(0,n.jsx)(t.li,{children:"If code is trivial but could be forgotten over time, please comment."}),"\n",(0,n.jsx)(t.li,{children:"Try and think about your code from a 3rd person view, it should make sense to anyone with a similar background in the technology that you are using."}),"\n",(0,n.jsx)(t.li,{children:"Sometimes difficult to understand code needs refactoring instead of more comments."}),"\n",(0,n.jsx)(t.li,{children:"Make sure the program can still build prior to pull request."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"For advanced fixes you should follow the general pathway for GitHub."}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Create your own fork of the code.\n",(0,n.jsx)(t.img,{alt:"Fork",src:o(63563).A+"",width:"1187",height:"177"})]}),"\n",(0,n.jsx)(t.li,{children:"Do the changes locally on your system in your preferred development environment."}),"\n",(0,n.jsxs)(t.li,{children:["Following the README.md instructions, test your changes locally with ",(0,n.jsx)(t.code,{children:"yarn build"})," and ",(0,n.jsx)(t.code,{children:"yarn run serve"})," or ",(0,n.jsx)(t.code,{children:"npm build"})," and ",(0,n.jsx)(t.code,{children:"npm run serve"})," to ensure there are no clear issues."]}),"\n",(0,n.jsxs)(t.li,{children:["Push the changes to your fork and submit a pull request by comparing across forks.\n",(0,n.jsx)(t.img,{alt:"Submit Pull Request",src:o(46793).A+"",width:"1016",height:"270"})]}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"how-to-report-a-bug-or-error",children:"How to report a bug or error"}),"\n",(0,n.jsx)(t.p,{children:"We do not have any strict template that you must follow, but please provide all required information so we can quickly resolve any issues."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["If you find an actual programming bug, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"bug"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["If you find a grammar/spelling/content error, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"documentation"}),"."]}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"how-to-suggest-a-feature-or-enhancement",children:"How to suggest a feature or enhancement"}),"\n",(0,n.jsx)(t.p,{children:"This documentation is for the community, so any feature requests are welcome."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["If you are requesting a feature, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"enhancement"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"Explain why this issue is needed, and what problems it will solve."}),"\n",(0,n.jsx)(t.li,{children:"Indicate if you are able/willing to help implement this feature."}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"code-review-process",children:"Code review process"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"The core team will take a look at any pull requests as soon as possible, generally you can expect a response within a day or two."}),"\n",(0,n.jsx)(t.li,{children:"If it is a simple and non-controversial fix we will review the code and approve."}),"\n",(0,n.jsx)(t.li,{children:"If there are questions, feedback, or more discussion needs to be had we will reach out to the contributor on the Pull Request to try and resolve said issues."}),"\n",(0,n.jsx)(t.li,{children:"If there is no response or activity within 2 weeks of team response we may close the pull request."}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"community",children:"Community"}),"\n",(0,n.jsxs)(t.p,{children:["You can chat with the core team on Discord ",(0,n.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:"https://autonomys.xyz/discord"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},63563:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/Fork_Instructions-942684d8fe9aef010d18c69aeb9de70e.png"},46793:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/Submit_Pull-2bfa788eff3c3decb57e18d3a6af8957.png"},28453:(e,t,o)=>{o.d(t,{R:()=>r,x:()=>l});var n=o(96540);const i={},s=n.createContext(i);function r(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7755],{13726:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>l,toc:()=>a});var n=o(74848),i=o(28453);const s={title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},r="How to Contribute!",l={id:"participate/contribute/intro",title:"Getting started",description:"How to contribute to the Autonomys Docs",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/intro.md",sourceDirName:"participate/contribute",slug:"/participate/contribute/intro",permalink:"/participate/contribute/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/participate/contribute/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting started",sidebar_position:1,description:"How to contribute to the Autonomys Docs",slug:"/participate/contribute/intro",keywords:["Docs","Contribute","How-To","Community","Awesome"]},sidebar:"tutorialSidebar",previous:{title:"Auto EVM Block Explorer",permalink:"/develop/auto-evm/block-explorer"},next:{title:"Code of Conduct",permalink:"/participate/contribute/code-of-conduct"}},c={},a=[{value:"You Rock!",id:"you-rock",level:3},{value:"Help us, Help you, Help us!",id:"help-us-help-you-help-us",level:3},{value:"What Can I Contribute?",id:"what-can-i-contribute",level:3},{value:"Simple Fix",id:"simple-fix",level:2},{value:"Never contributed before?",id:"never-contributed-before",level:2},{value:"Advanced Fix",id:"advanced-fix",level:2}];function u(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"how-to-contribute",children:"How to Contribute!"})}),"\n",(0,n.jsx)(t.h3,{id:"you-rock",children:"You Rock!"}),"\n",(0,n.jsx)(t.p,{children:"First off, thank you for considering contributing to the Autonomys Network. It's through the amazing collaboration of people like yourself that truly makes the open source community amazing. \u2764\ufe0f"}),"\n",(0,n.jsx)(t.h3,{id:"help-us-help-you-help-us",children:"Help us, Help you, Help us!"}),"\n",(0,n.jsx)(t.p,{children:"Following these guidelines shows that you respect the time of the developers who manage and develop this open source project. In return, they should reciprocate that respect by addressing your issue, assessing changes, and helping you finalize your pull requests."}),"\n",(0,n.jsx)(t.h3,{id:"what-can-i-contribute",children:"What Can I Contribute?"}),"\n",(0,n.jsx)(t.p,{children:"We are a fully open source project, meaning we are open to all kinds of contributions from our community. Here are a few examples of contributions that we are open to:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Added Content:"})," Writing a nice guide? Submit it on the ",(0,n.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/guides-and-faqs/13",children:"forum guides"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Bug Reports & Fixes:"})," Find a bug or error? Let us know where it's hiding. Report it at the ",(0,n.jsx)(t.a,{href:"https://forum.autonomys.xyz/c/support/5",children:"support forum"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Feature Requests & Implementations:"})," Looking for a new feature? Share your ideas so we can improve."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsxs)(t.em,{children:["If you have something that is not listed, try to be as descriptive as possible and feel free to submit the ",(0,n.jsx)(t.a,{href:"https://github.com/autonomys/subspace-docs/pulls",children:"pull request"}),"."]})}),"\n",(0,n.jsx)(t.h1,{id:"ground-rules",children:"Ground Rules"}),"\n",(0,n.jsxs)(t.p,{children:["Please refer to our ",(0,n.jsx)(t.a,{href:"/participate/contribute/code-of-conduct",children:"Code of Conduct"}),"."]}),"\n",(0,n.jsx)(t.h1,{id:"your-first-contribution",children:"Your First Contribution"}),"\n",(0,n.jsx)(t.h2,{id:"simple-fix",children:"Simple Fix"}),"\n",(0,n.jsxs)(t.p,{children:["Please follow this pathway for ",(0,n.jsx)(t.em,{children:"minor"})," contributions such as spelling errors, typos, rewording, etc."]}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:["If you are adding entirely new pages, features, etc, then please refer to the ",(0,n.jsx)(t.code,{children:"Advanced"})," portion of this section."]}),"\n"]}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Go to the ",(0,n.jsx)(t.a,{href:"https://docs.autonomys.xyz",children:"Autonomys Documentation"}),", and find the page that you would like to change."]}),"\n",(0,n.jsxs)(t.li,{children:["Scroll to the bottom and click ",(0,n.jsx)(t.code,{children:"Edit this page"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"This will open up GitHub, and direct you to the raw page on GitHub."}),"\n",(0,n.jsxs)(t.li,{children:["In the top right click the ",(0,n.jsx)(t.code,{children:"pencil"})," emoji to edit the page."]}),"\n",(0,n.jsx)(t.li,{children:"GitHub will change the page to a text editor, where you will be able to make changes."}),"\n",(0,n.jsxs)(t.li,{children:["Once you are satisfied with your changes, scroll to the bottom and fill out the following fields.","\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Fill out Title"}),"\n",(0,n.jsx)(t.li,{children:"Fill out Description"}),"\n",(0,n.jsxs)(t.li,{children:["Click the ",(0,n.jsx)(t.code,{children:"Create a new branch for this commit and start a pull request."})," option"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(t.li,{children:["Click ",(0,n.jsx)(t.code,{children:"Propose Changes"})]}),"\n",(0,n.jsxs)(t.li,{children:["On the right you will see some options, you will want to apply the most accurate ",(0,n.jsx)(t.code,{children:"labels"})," listed."]}),"\n",(0,n.jsxs)(t.li,{children:["Click ",(0,n.jsx)(t.code,{children:"Create Pull Request"})]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["\ud83c\udf89Congratulations! You have just submitted your first pull request!\n",(0,n.jsx)(t.em,{children:"Please provide some time for a maintainer to view your pull request and approve it, or request adjustments."})]}),"\n",(0,n.jsx)(t.h2,{id:"never-contributed-before",children:"Never contributed before?"}),"\n",(0,n.jsx)(t.p,{children:"No worries! We all start somewhere \ud83d\ude80 There are several videos and resources online to show various ways to use GitHub.\nCheck out some of these amazing guides to help get you familiar with GitHub and contributing."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions",children:"First Contributions - Terminal"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://github.com/firstcontributions/first-contributions/blob/master/gui-tool-tutorials/github-desktop-tutorial.md",children:"First Contributions - GitHub Desktop"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github",children:"How to Contribute to an Open Source Project on GitHub"})}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"advanced-fix",children:"Advanced Fix"}),"\n",(0,n.jsx)(t.p,{children:"This section presumes a better understanding of GitHub, and programming basics."}),"\n",(0,n.jsx)(t.p,{children:"For larger, more advanced fixes please ensure you follow the basic principles below."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Do ",(0,n.jsx)(t.strong,{children:"not"})," comment simple trivial code such as importing existing components, and basic HTML/CSS."]}),"\n",(0,n.jsx)(t.li,{children:"Do comment on complex non-trivial code, complex logic should be easy to understand."}),"\n",(0,n.jsx)(t.li,{children:"All public functions need to be commented."}),"\n",(0,n.jsx)(t.li,{children:"If code is trivial but could be forgotten over time, please comment."}),"\n",(0,n.jsx)(t.li,{children:"Try and think about your code from a 3rd person view, it should make sense to anyone with a similar background in the technology that you are using."}),"\n",(0,n.jsx)(t.li,{children:"Sometimes difficult to understand code needs refactoring instead of more comments."}),"\n",(0,n.jsx)(t.li,{children:"Make sure the program can still build prior to pull request."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"For advanced fixes you should follow the general pathway for GitHub."}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Create your own fork of the code.\n",(0,n.jsx)(t.img,{alt:"Fork",src:o(63563).A+"",width:"1187",height:"177"})]}),"\n",(0,n.jsx)(t.li,{children:"Do the changes locally on your system in your preferred development environment."}),"\n",(0,n.jsxs)(t.li,{children:["Following the README.md instructions, test your changes locally with ",(0,n.jsx)(t.code,{children:"yarn build"})," and ",(0,n.jsx)(t.code,{children:"yarn run serve"})," or ",(0,n.jsx)(t.code,{children:"npm build"})," and ",(0,n.jsx)(t.code,{children:"npm run serve"})," to ensure there are no clear issues."]}),"\n",(0,n.jsxs)(t.li,{children:["Push the changes to your fork and submit a pull request by comparing across forks.\n",(0,n.jsx)(t.img,{alt:"Submit Pull Request",src:o(46793).A+"",width:"1016",height:"270"})]}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"how-to-report-a-bug-or-error",children:"How to report a bug or error"}),"\n",(0,n.jsx)(t.p,{children:"We do not have any strict template that you must follow, but please provide all required information so we can quickly resolve any issues."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["If you find an actual programming bug, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"bug"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:["If you find a grammar/spelling/content error, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"documentation"}),"."]}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"how-to-suggest-a-feature-or-enhancement",children:"How to suggest a feature or enhancement"}),"\n",(0,n.jsx)(t.p,{children:"This documentation is for the community, so any feature requests are welcome."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["If you are requesting a feature, please submit a GitHub issue and use the label ",(0,n.jsx)(t.code,{children:"enhancement"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"Explain why this issue is needed, and what problems it will solve."}),"\n",(0,n.jsx)(t.li,{children:"Indicate if you are able/willing to help implement this feature."}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"code-review-process",children:"Code review process"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"The core team will take a look at any pull requests as soon as possible, generally you can expect a response within a day or two."}),"\n",(0,n.jsx)(t.li,{children:"If it is a simple and non-controversial fix we will review the code and approve."}),"\n",(0,n.jsx)(t.li,{children:"If there are questions, feedback, or more discussion needs to be had we will reach out to the contributor on the Pull Request to try and resolve said issues."}),"\n",(0,n.jsx)(t.li,{children:"If there is no response or activity within 2 weeks of team response we may close the pull request."}),"\n"]}),"\n",(0,n.jsx)(t.h1,{id:"community",children:"Community"}),"\n",(0,n.jsxs)(t.p,{children:["You can chat with the core team on Discord ",(0,n.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:"https://autonomys.xyz/discord"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},63563:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/Fork_Instructions-942684d8fe9aef010d18c69aeb9de70e.png"},46793:(e,t,o)=>{o.d(t,{A:()=>n});const n=o.p+"assets/images/Submit_Pull-2bfa788eff3c3decb57e18d3a6af8957.png"},28453:(e,t,o)=>{o.d(t,{R:()=>r,x:()=>l});var n=o(96540);const i={},s=n.createContext(i);function r(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4a131490.c0a88532.js b/assets/js/4a131490.c0a88532.js deleted file mode 100644 index a069c0a246e..00000000000 --- a/assets/js/4a131490.c0a88532.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4474],{7199:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var n=s(74848),t=s(28453);const i={title:"Verified Farmer Discord Role",sidebar_position:4,description:"How to verify your Autonomys Network farmer",slug:"/farming/guides/verified-farmer",keywords:["Farmer","Verify","Farming","GUI","Executable"]},o=void 0,a={id:"farming-&-staking/farming/additional-guides/verify-farmer",title:"Verified Farmer Discord Role",description:"How to verify your Autonomys Network farmer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/verify-farmer.md",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/verified-farmer",permalink:"/farming/guides/verified-farmer",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/verify-farmer.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Verified Farmer Discord Role",sidebar_position:4,description:"How to verify your Autonomys Network farmer",slug:"/farming/guides/verified-farmer",keywords:["Farmer","Verify","Farming","GUI","Executable"]},sidebar:"tutorialSidebar",previous:{title:"Grafana Dashboard",permalink:"/farming/guides/grafana-dashboard"},next:{title:"Getting Started",permalink:"/staking/intro"}},l={},c=[{value:"Eligibility for the Verified Farmer Role",id:"eligibility-for-the-verified-farmer-role",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2}];function d(e){const r={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:["We are thrilled to announce the ",(0,n.jsx)(r.strong,{children:"Verified Farmer"})," role on our ",(0,n.jsx)(r.a,{href:"https://autonomys.xyz/discord",children:"Discord server"}),"!\nYou can track your farmer through the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"}),"."]}),"\n",(0,n.jsx)(r.h2,{id:"eligibility-for-the-verified-farmer-role",children:"Eligibility for the Verified Farmer Role"}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"If you have earned a block or vote reward"}),", you can now link your Discord account to your farmer wallet through the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," to obtain this role. Here\u2019s how to do it:"]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Connect Wallet"})," in the top right corner of the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"}),"."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Connect Wallet",src:s(35031).A+"",width:"1572",height:"1172"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Sign into your wallet through Subwallet or Polkadot."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Select Wallet",src:s(31897).A+"",width:"339",height:"212"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Find the new ",(0,n.jsx)(r.strong,{children:"Get your Farmer role on Discord"})," section within the panel. ",(0,n.jsx)(r.strong,{children:"NOTE: This section will not appear if you have not farmed any TSSC yet."})]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Wallet Panel",src:s(33813).A+"",width:"1897",height:"1167"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Verify the ownership of the wallet"}),"."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Verify Wallet",src:s(34424).A+"",width:"392",height:"626"})}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Successful Verify",src:s(93151).A+"",width:"510",height:"1188"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Join our Discord Server"})," and ",(0,n.jsx)(r.strong,{children:"Connect your Discord Account"}),"!"]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Connect Discord",src:s(22358).A+"",width:"457",height:"819"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["After these steps, you should now see that you're a Farmer on Discord and have received the ",(0,n.jsx)(r.strong,{children:"Verified Farmer"})," role in Discord."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Successful Role",src:s(53216).A+"",width:"508",height:"151"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,n.jsx)(r.p,{children:"If you don't see the wallet in the dropdown menu of Astral, follow the steps below."}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Open your wallet."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Wallet",src:s(71752).A+"",width:"392",height:"602"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Select the 3 lines in the top left."}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Manage Website Access"})]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Manage Website Access",src:s(96259).A+"",width:"392",height:"600"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Astral"})]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Ensure all wallets are selected."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Select All Wallets",src:s(16575).A+"",width:"388",height:"603"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Should you have any questions or need further assistance, please don't hesitate to reach out to the team on Discord!"})]})}function h(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},22358:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/connect-discord-0bce8bbd2e4174fcef8899bc312c603a.png"},35031:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/connect-wallet-d603f4bd335a7b7b5e5f0627cd4d7726.png"},96259:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/manage-website-access-122d887ba998b02163cc8c9228ff3d6b.png"},16575:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/select-astral-00840ab81e3f0f29aa9c5aab7b145de9.png"},31897:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/select-wallet-43c60c0071ac18136cbf0591da55e403.png"},53216:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/successful-role-59eeb94b2fbf24229bec2e9cbdf7a977.png"},93151:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/successful-verify-256eb4eceb9fc2ad5f02c28c85798dda.png"},34424:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/verify-wallet-5dc2bd68d1bfd2519764dbb13faa3948.png"},33813:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/wallet-panel-f85fe8f01f4244c6aa6081623517d437.png"},71752:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/wallet-e6b89d77f100e7c9db9db92f7764ab39.png"},28453:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>a});var n=s(96540);const t={},i=n.createContext(t);function o(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),n.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4a131490.cbbf74af.js b/assets/js/4a131490.cbbf74af.js new file mode 100644 index 00000000000..ce36e4a254b --- /dev/null +++ b/assets/js/4a131490.cbbf74af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4474],{7199:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var n=s(74848),t=s(28453);const i={title:"Verified Farmer Discord Role",sidebar_position:4,description:"How to verify your Autonomys Network farmer",slug:"/farming/guides/verified-farmer",keywords:["Farmer","Verify","Farming","GUI","Executable"]},o=void 0,a={id:"farming-&-staking/farming/additional-guides/verify-farmer",title:"Verified Farmer Discord Role",description:"How to verify your Autonomys Network farmer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/verify-farmer.md",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/verified-farmer",permalink:"/farming/guides/verified-farmer",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/verify-farmer.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Verified Farmer Discord Role",sidebar_position:4,description:"How to verify your Autonomys Network farmer",slug:"/farming/guides/verified-farmer",keywords:["Farmer","Verify","Farming","GUI","Executable"]},sidebar:"tutorialSidebar",previous:{title:"Grafana Dashboard",permalink:"/farming/guides/grafana-dashboard"},next:{title:"Getting Started",permalink:"/staking/intro"}},l={},c=[{value:"Eligibility for the Verified Farmer Role",id:"eligibility-for-the-verified-farmer-role",level:2},{value:"Troubleshooting",id:"troubleshooting",level:2}];function d(e){const r={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(r.p,{children:["We are thrilled to announce the ",(0,n.jsx)(r.strong,{children:"Verified Farmer"})," role on our ",(0,n.jsx)(r.a,{href:"https://autonomys.xyz/discord",children:"Discord server"}),"!\nYou can track your farmer through the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"}),"."]}),"\n",(0,n.jsx)(r.h2,{id:"eligibility-for-the-verified-farmer-role",children:"Eligibility for the Verified Farmer Role"}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"If you have earned a block or vote reward"}),", you can now link your Discord account to your farmer wallet through the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral"})," to obtain this role. Here\u2019s how to do it:"]}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Connect Wallet"})," in the top right corner of the ",(0,n.jsx)(r.a,{href:"https://astral.autonomys.xyz",children:"Astral Block Explorer"}),"."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Connect Wallet",src:s(35031).A+"",width:"1572",height:"1172"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Sign into your wallet through Subwallet or Polkadot."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Select Wallet",src:s(31897).A+"",width:"339",height:"212"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Find the new ",(0,n.jsx)(r.strong,{children:"Get your Farmer role on Discord"})," section within the panel. ",(0,n.jsx)(r.strong,{children:"NOTE: This section will not appear if you have not farmed any AI3 yet."})]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Wallet Panel",src:s(33813).A+"",width:"1897",height:"1167"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Verify the ownership of the wallet"}),"."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Verify Wallet",src:s(34424).A+"",width:"392",height:"626"})}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Successful Verify",src:s(93151).A+"",width:"510",height:"1188"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Join our Discord Server"})," and ",(0,n.jsx)(r.strong,{children:"Connect your Discord Account"}),"!"]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Connect Discord",src:s(22358).A+"",width:"457",height:"819"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["After these steps, you should now see that you're a Farmer on Discord and have received the ",(0,n.jsx)(r.strong,{children:"Verified Farmer"})," role in Discord."]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Successful Role",src:s(53216).A+"",width:"508",height:"151"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,n.jsx)(r.p,{children:"If you don't see the wallet in the dropdown menu of Astral, follow the steps below."}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Open your wallet."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Wallet",src:s(71752).A+"",width:"392",height:"602"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Select the 3 lines in the top left."}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Manage Website Access"})]}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Manage Website Access",src:s(96259).A+"",width:"392",height:"600"})}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:["Select ",(0,n.jsx)(r.strong,{children:"Astral"})]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsx)(r.p,{children:"Ensure all wallets are selected."}),"\n",(0,n.jsx)(r.p,{children:(0,n.jsx)(r.img,{alt:"Select All Wallets",src:s(16575).A+"",width:"388",height:"603"})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.p,{children:"Should you have any questions or need further assistance, please don't hesitate to reach out to the team on Discord!"})]})}function h(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},22358:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/connect-discord-0bce8bbd2e4174fcef8899bc312c603a.png"},35031:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/connect-wallet-d603f4bd335a7b7b5e5f0627cd4d7726.png"},96259:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/manage-website-access-122d887ba998b02163cc8c9228ff3d6b.png"},16575:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/select-astral-00840ab81e3f0f29aa9c5aab7b145de9.png"},31897:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/select-wallet-43c60c0071ac18136cbf0591da55e403.png"},53216:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/successful-role-59eeb94b2fbf24229bec2e9cbdf7a977.png"},93151:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/successful-verify-256eb4eceb9fc2ad5f02c28c85798dda.png"},34424:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/verify-wallet-5dc2bd68d1bfd2519764dbb13faa3948.png"},33813:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/wallet-panel-f85fe8f01f4244c6aa6081623517d437.png"},71752:(e,r,s)=>{s.d(r,{A:()=>n});const n=s.p+"assets/images/wallet-e6b89d77f100e7c9db9db92f7764ab39.png"},28453:(e,r,s)=>{s.d(r,{R:()=>o,x:()=>a});var n=s(96540);const t={},i=n.createContext(t);function o(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),n.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d126344.162187b2.js b/assets/js/4d126344.162187b2.js new file mode 100644 index 00000000000..4d9d0426244 --- /dev/null +++ b/assets/js/4d126344.162187b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4143],{28282:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>l});var o=s(74848),n=s(28453);const c={title:"Autonomys Faucet",sidebar_position:1,description:"Guide on utilizing Autonomys faucets for getting test tokens",slug:"/develop/auto-evm/faucet",keywords:["faucet","autonomys network"]},r=void 0,i={id:"develop/nova/Resources/faucet",title:"Autonomys Faucet",description:"Guide on utilizing Autonomys faucets for getting test tokens",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/faucet.md",sourceDirName:"develop/nova/Resources",slug:"/develop/auto-evm/faucet",permalink:"/develop/auto-evm/faucet",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/Resources/faucet.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Autonomys Faucet",sidebar_position:1,description:"Guide on utilizing Autonomys faucets for getting test tokens",slug:"/develop/auto-evm/faucet",keywords:["faucet","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Remix IDE",permalink:"/develop/auto-evm/guides/remix"},next:{title:"Auto EVM Block Explorer",permalink:"/develop/auto-evm/block-explorer"}},a={},l=[{value:"How to get some test tokens",id:"how-to-get-some-test-tokens",level:3}];function d(e){const t={a:"a",code:"code",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h3,{id:"how-to-get-some-test-tokens",children:"How to get some test tokens"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"The Faucet"})," is available on our ",(0,o.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:(0,o.jsx)(t.strong,{children:"Discord server"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"In order to get access to the role-gated developer chat and faucet channel:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Join our ",(0,o.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:"Discord"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Click on Autonomys Network at the top left corner and choose ",(0,o.jsx)(t.strong,{children:"Linked Roles"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Discord-1",src:s(70603).A+"",width:"231",height:"539"})}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Link your GitHub account to get a developer role and gain access to ",(0,o.jsx)(t.strong,{children:"developer-chat"}),".\n",(0,o.jsx)(t.img,{alt:"Discord-2",src:s(752).A+"",width:"737",height:"206"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["As soon as you get a ",(0,o.jsx)(t.strong,{children:"Developer"})," role, the ",(0,o.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1133496871499862077",children:(0,o.jsx)(t.strong,{children:"Faucet"})})," channel will become available to you."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["You can use a slash command ",(0,o.jsx)(t.code,{children:"/faucet your_EVM_wallet_address_here"})," to request tokens.\n",(0,o.jsx)(t.img,{alt:"Faucet-1",src:s(75715).A+"",width:"623",height:"97"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["In case of a successful request, you will see the confirmation and link to the blockscout explorer shortly.\n",(0,o.jsx)(t.img,{alt:"Faucet-2",src:s(38856).A+"",width:"616",height:"536"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"You can request tokens once every 24 hours."}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},70603:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Discord-1-25bd70f76741163d9340dee4581cdb68.png"},752:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Discord-2-f26a783c4324243dec4a1c10235f646f.png"},75715:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Faucet-1-9a64418aca48167bcf2e41c47a3386f1.png"},38856:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Faucet-2-9e348feb9c35130ad01c8d56a10f65e3.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>i});var o=s(96540);const n={},c=o.createContext(n);function r(e){const t=o.useContext(c);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),o.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4d126344.66d8f86e.js b/assets/js/4d126344.66d8f86e.js deleted file mode 100644 index af3fcfe3c5a..00000000000 --- a/assets/js/4d126344.66d8f86e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4143],{28282:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>l});var o=s(74848),n=s(28453);const c={title:"Autonomys Faucet",sidebar_position:1,description:"Guide on utilizing Autonomys faucets for getting test tokens",slug:"/develop/nova/faucet",keywords:["faucet","autonomys network"]},r=void 0,i={id:"develop/nova/Resources/faucet",title:"Autonomys Faucet",description:"Guide on utilizing Autonomys faucets for getting test tokens",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/faucet.md",sourceDirName:"develop/nova/Resources",slug:"/develop/nova/faucet",permalink:"/develop/nova/faucet",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/Resources/faucet.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Autonomys Faucet",sidebar_position:1,description:"Guide on utilizing Autonomys faucets for getting test tokens",slug:"/develop/nova/faucet",keywords:["faucet","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Remix IDE",permalink:"/develop/nova/guides/remix"},next:{title:"Nova Block Explorer",permalink:"/develop/nova/block-explorer"}},a={},l=[{value:"How to get some test tokens",id:"how-to-get-some-test-tokens",level:3}];function d(e){const t={a:"a",code:"code",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h3,{id:"how-to-get-some-test-tokens",children:"How to get some test tokens"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"The Faucet"})," is available on our ",(0,o.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:(0,o.jsx)(t.strong,{children:"Discord server"})}),"."]}),"\n",(0,o.jsx)(t.p,{children:"In order to get access to the role-gated developer chat and faucet channel:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Join our ",(0,o.jsx)(t.a,{href:"https://autonomys.xyz/discord",children:"Discord"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Click on Autonomys Network at the top left corner and choose ",(0,o.jsx)(t.strong,{children:"Linked Roles"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Discord-1",src:s(70603).A+"",width:"231",height:"539"})}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Link your GitHub account to get a developer role and gain access to ",(0,o.jsx)(t.strong,{children:"developer-chat"}),".\n",(0,o.jsx)(t.img,{alt:"Discord-2",src:s(752).A+"",width:"737",height:"206"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["As soon as you get a ",(0,o.jsx)(t.strong,{children:"Developer"})," role, the ",(0,o.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1133496871499862077",children:(0,o.jsx)(t.strong,{children:"Faucet"})})," channel will become available to you."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["You can use a slash command ",(0,o.jsx)(t.code,{children:"/faucet your_EVM_wallet_address_here"})," to request tokens.\n",(0,o.jsx)(t.img,{alt:"Faucet-1",src:s(75715).A+"",width:"623",height:"97"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["In case of a successful request, you will see the confirmation and link to the blockscout explorer shortly.\n",(0,o.jsx)(t.img,{alt:"Faucet-2",src:s(38856).A+"",width:"616",height:"536"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"You can request tokens once every 24 hours."}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},70603:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Discord-1-25bd70f76741163d9340dee4581cdb68.png"},752:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Discord-2-f26a783c4324243dec4a1c10235f646f.png"},75715:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Faucet-1-9a64418aca48167bcf2e41c47a3386f1.png"},38856:(e,t,s)=>{s.d(t,{A:()=>o});const o=s.p+"assets/images/Faucet-2-9e348feb9c35130ad01c8d56a10f65e3.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>i});var o=s(96540);const n={},c=o.createContext(n);function r(e){const t=o.useContext(c);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),o.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5419918d.70163acc.js b/assets/js/5419918d.70163acc.js new file mode 100644 index 00000000000..2857e687727 --- /dev/null +++ b/assets/js/5419918d.70163acc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9396],{31194:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=n(74848),i=n(28453);const o={title:"Remix IDE",sidebar_position:4,description:"Testing and Deploying Smart Contracts using Remix IDE",slug:"/develop/auto-evm/guides/remix",keywords:["autonomys network","remix ide"]},r=void 0,a={id:"develop/nova/additional-guides/remix_guide",title:"Remix IDE",description:"Testing and Deploying Smart Contracts using Remix IDE",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/remix_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/auto-evm/guides/remix",permalink:"/develop/auto-evm/guides/remix",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/remix_guide.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Remix IDE",sidebar_position:4,description:"Testing and Deploying Smart Contracts using Remix IDE",slug:"/develop/auto-evm/guides/remix",keywords:["autonomys network","remix ide"]},sidebar:"tutorialSidebar",previous:{title:"Local Development",permalink:"/develop/auto-evm/guides/local-development"},next:{title:"Autonomys Faucet",permalink:"/develop/auto-evm/faucet"}},c={},d=[{value:"Remix IDE guide",id:"remix-ide-guide",level:3}];function l(e){const t={a:"a",admonition:"admonition",br:"br",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h3,{id:"remix-ide-guide",children:"Remix IDE guide"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.p,{children:"Remix is a great tool that allows you to easily write, test and deploy smart contracts on any EVM-compatible blockchain. Moreover, integration with MetaMask allows the utilization of any RPC, that\u2019s why we\u2019ve just set up a reference to Autonomys core EVM in our MetaMask wallet!"}),"\n",(0,s.jsxs)(t.p,{children:["Remix has ",(0,s.jsx)(t.a,{href:"https://remix-ide.readthedocs.io/en/latest/",children:"amazing documentation"}),", but this guide will cover everything required to get you started."]}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Using the browser of your choice navigate to ",(0,s.jsx)(t.strong,{children:(0,s.jsx)(t.a,{href:"https://remix.ethereum.org",children:"Remix website"})}),".\nYou will see a file explorer and interface for creating new workspaces, integrations with GitHub, Gist, IPFS, HTTPS, preloaded templates, and plugins.\nLet\u2019s create a new workspace by clicking on the + sign beside WORKSPACES."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-1",src:n(1172).A+"",width:"685",height:"350"})}),"\n",(0,s.jsxs)(t.ol,{start:"2",children:["\n",(0,s.jsx)(t.li,{children:"You can enter any name and use the ERC20 template."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-2",src:n(22639).A+"",width:"340",height:"377"})}),"\n",(0,s.jsxs)(t.ol,{start:"3",children:["\n",(0,s.jsxs)(t.li,{children:["Right after you create your workspace, you will see a few folders created for you.\nLet\u2019s click on contracts and have a look at ",(0,s.jsx)(t.code,{children:"MyToken.sol"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-3",src:n(41094).A+"",width:"342",height:"379"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsxs)(t.li,{children:["Here, you can change the name of your contract (in the example, to ",(0,s.jsx)(t.code,{children:"Counter"}),"), the name of the token (in this example, we're calling it ",(0,s.jsx)(t.code,{children:"SubspaceTestToken"}),") and the token symbol (we're using ",(0,s.jsx)(t.code,{children:"TSSCtest"}),").\nLet\u2019s add a simple smart contract that has three functions - ",(0,s.jsx)(t.code,{children:"setNumber()"}),", ",(0,s.jsx)(t.code,{children:"increment()"})," and ",(0,s.jsx)(t.code,{children:"decrement()"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{children:' // SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \'@openzeppelin/contracts/token/ERC20/ERC20.sol\';\n\ncontract Counter is ERC20 {\n constructor() ERC20("AutonomysTestToken", "TSSCtest") {}\n\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n }\n'})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-4",src:n(43513).A+"",width:"684",height:"350"})}),"\n",(0,s.jsxs)(t.ol,{start:"5",children:["\n",(0,s.jsxs)(t.li,{children:["Next, let\u2019s compile a ",(0,s.jsx)(t.code,{children:"Counter"})," contract. To compile, click on SOLIDITY COMPILER on the left and choose the compiler version that corresponds to the Solidity version of your contract. In our case, it\u2019s version 0.8.9.\nClick on ",(0,s.jsx)(t.code,{children:"Compile MyToken.sol"})," and check if it compiles correctly. If it does, you will see a green checkmark by the compiler."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-5",src:n(37264).A+"",width:"350",height:"569"})}),"\n",(0,s.jsxs)(t.ol,{start:"6",children:["\n",(0,s.jsxs)(t.li,{children:["Deploying a smart contract could be an expensive procedure, based on the gas costs associated with the transaction. That is why it\u2019s recommended that you thoroughly test the smart contracts for correctness before proceeding with deployment.\nTo test the contract, let\u2019s open the tests folder and have a look at ",(0,s.jsx)(t.code,{children:"MyToken.sol"})," created for us.",(0,s.jsx)(t.br,{}),"\n","Let\u2019s first try to run a test as is without making any changes."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-6",src:n(51083).A+"",width:"779",height:"400"})}),"\n",(0,s.jsxs)(t.ol,{start:"7",children:["\n",(0,s.jsx)(t.li,{children:"To run the tests, select SOLIDITY UNIT TESTING in the bar on the left and click Run."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-7",src:n(76930).A+"",width:"350",height:"417"})}),"\n",(0,s.jsxs)(t.ol,{start:"8",children:["\n",(0,s.jsxs)(t.li,{children:["As expected, the test failed because we manually changed the token name and symbol.\nThis is Test Driven Development (TDD) in action! In order to make the test pass, replace the internals of ",(0,s.jsx)(t.code,{children:"MyToken.sol"})," with the provided below code. In the test, we're adding a few assertions for the ",(0,s.jsx)(t.code,{children:"increment()"})," and ",(0,s.jsx)(t.code,{children:"decrement()"})," functions. In this example, we will set up an initial value of ",(0,s.jsx)(t.code,{children:"number"})," to 2 and ",(0,s.jsx)(t.code,{children:"increment"})," and then ",(0,s.jsx)(t.code,{children:"decrement"})," it by 1. We would expect the number to increase to 3 and then decrease back to 2."]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:' pragma solidity >=0.7.0 <0.9.0;\n import "remix_tests.sol";\n import "../contracts/MyToken.sol";\n\n contract CounterTest is Counter {\n\n function testTokenInitialValues() public {\n Assert.equal(name(), "AutonomysTestToken", "token name did not match");\n Assert.equal(symbol(), "TSSCtest", "token symbol did not match");\n Assert.equal(decimals(), 18, "token decimals did not match");\n Assert.equal(totalSupply(), 0, "token supply should be zero");\n }\n\n Counter public counter;\n\n function setUp() public {\n counter = new Counter();\n counter.setNumber(2);\n }\n\n function testIncrement() public {\n counter.increment();\n Assert.equal(counter.number(), 3, "test increment did not match");\n }\n\n function testDecrement() public {\n counter.decrement();\n Assert.equal(counter.number(), 2, "test decrement did not match");\n }\n }\n'})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-8",src:n(81957).A+"",width:"778",height:"400"})}),"\n",(0,s.jsxs)(t.ol,{start:"9",children:["\n",(0,s.jsxs)(t.li,{children:["Great, all tests are now passing which means our smart contract ",(0,s.jsx)(t.code,{children:"Counter"})," is indeed working as we expect.\nWe\u2019re all set to deploy it now!"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-9",src:n(46044).A+"",width:"350",height:"447"})}),"\n",(0,s.jsxs)(t.ol,{start:"10",children:["\n",(0,s.jsx)(t.li,{children:"To deploy click on the DEPLOY AND RUN TRANSACTIONS tab on the left.\nRemix allows you to use one of the existing EVMs or inject your own provider through its integration with MetaMask.\nSince we already have a MetaMask Account set up, let\u2019s use this option."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-10",src:n(93710).A+"",width:"350",height:"595"})}),"\n",(0,s.jsxs)(t.ol,{start:"11",children:["\n",(0,s.jsx)(t.li,{children:"You will be prompted to confirm the password with MetaMask, just make sure that the network you\u2019re connected to is Autonomys EVM."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-11",src:n(93207).A+"",width:"350",height:"605"})}),"\n",(0,s.jsxs)(t.ol,{start:"12",children:["\n",(0,s.jsxs)(t.li,{children:["Adjust the gas limit and deploy your smart contract on Autonomys Core EVM.\nNow your transaction is recorded and you can interact with your smart contract at the bottom of the page - it's possible to call the functions ",(0,s.jsx)(t.code,{children:"increment()"})," and ",(0,s.jsx)(t.code,{children:"decrement()"})," as well as ",(0,s.jsx)(t.code,{children:"setNumber()"})]}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsxs)(t.p,{children:["Do not attempt to speed up a transaction (do not include a tip on top of the gas fees). To read more about this, please refer to ",(0,s.jsx)(t.a,{href:"/develop/auto-evm/introduction#important-note-about-submitting-a-transaction",children:"this section"}),"."]})}),"\n",(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsxs)(t.p,{children:["In some cases when deploying the script, you may experience ",(0,s.jsx)(t.strong,{children:'"No manual gas limit set"'})," or ",(0,s.jsx)(t.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,s.jsx)(t.a,{href:"/develop/auto-evm/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Remix-12",src:n(69276).A+"",width:"350",height:"550"})}),"\n",(0,s.jsx)(t.p,{children:"Congratulations, you've just deployed your smart contract on Autonomys Core EVM!"})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1172:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-1-d0206fa95d420451ecdd17e94ef74788.png"},93710:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-10-1f9898d164cdb54a3eb26ddc2137d3e1.png"},93207:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-11-8fcd199526796d55c6cace291168a57f.png"},69276:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-12-c77f1688bb362b204a4095bca6fe75fc.png"},22639:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-2-00870623668f141197ba57f205a38ac5.png"},41094:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-3-6ecfd57605e0a80582c45edd1da2bef1.png"},43513:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-4-ebafc2bcd0f80ac8b135020f21b5c4ef.png"},37264:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-5-b0fd840e43bebb342b1c4b458f2e13ca.png"},51083:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-6-325d40445ae4448152be2fb307d30c1f.png"},76930:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-7-7596e211dcc6b1ec76a949572cc6d118.png"},81957:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-8-74aaeec76c2236665e0db5465bd5377a.png"},46044:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/Remix-9-a04bacfa6217fc47e94f82673dfc3f33.png"},28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var s=n(96540);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5419918d.98944e23.js b/assets/js/5419918d.98944e23.js deleted file mode 100644 index 44811bd6722..00000000000 --- a/assets/js/5419918d.98944e23.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9396],{31194:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(74848),i=t(28453);const o={title:"Remix IDE",sidebar_position:4,description:"Testing and Deploying Smart Contracts using Remix IDE",slug:"/develop/nova/guides/remix",keywords:["autonomys network","remix ide"]},r=void 0,a={id:"develop/nova/additional-guides/remix_guide",title:"Remix IDE",description:"Testing and Deploying Smart Contracts using Remix IDE",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/remix_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/nova/guides/remix",permalink:"/develop/nova/guides/remix",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/remix_guide.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Remix IDE",sidebar_position:4,description:"Testing and Deploying Smart Contracts using Remix IDE",slug:"/develop/nova/guides/remix",keywords:["autonomys network","remix ide"]},sidebar:"tutorialSidebar",previous:{title:"Local Development",permalink:"/develop/nova/guides/local-development"},next:{title:"Autonomys Faucet",permalink:"/develop/nova/faucet"}},c={},d=[{value:"Remix IDE guide",id:"remix-ide-guide",level:3}];function l(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"remix-ide-guide",children:"Remix IDE guide"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.p,{children:"Remix is a great tool that allows you to easily write, test and deploy smart contracts on any EVM-compatible blockchain. Moreover, integration with MetaMask allows the utilization of any RPC, that\u2019s why we\u2019ve just set up a reference to Autonomys core EVM in our MetaMask wallet!"}),"\n",(0,s.jsxs)(n.p,{children:["Remix has ",(0,s.jsx)(n.a,{href:"https://remix-ide.readthedocs.io/en/latest/",children:"amazing documentation"}),", but this guide will cover everything required to get you started."]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Using the browser of your choice navigate to ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://remix.ethereum.org",children:"Remix website"})}),".\nYou will see a file explorer and interface for creating new workspaces, integrations with GitHub, Gist, IPFS, HTTPS, preloaded templates, and plugins.\nLet\u2019s create a new workspace by clicking on the + sign beside WORKSPACES."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-1",src:t(1172).A+"",width:"685",height:"350"})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsx)(n.li,{children:"You can enter any name and use the ERC20 template."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-2",src:t(22639).A+"",width:"340",height:"377"})}),"\n",(0,s.jsxs)(n.ol,{start:"3",children:["\n",(0,s.jsxs)(n.li,{children:["Right after you create your workspace, you will see a few folders created for you.\nLet\u2019s click on contracts and have a look at ",(0,s.jsx)(n.code,{children:"MyToken.sol"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-3",src:t(41094).A+"",width:"342",height:"379"})}),"\n",(0,s.jsxs)(n.ol,{start:"4",children:["\n",(0,s.jsxs)(n.li,{children:["Here, you can change the name of your contract (in the example, to ",(0,s.jsx)(n.code,{children:"Counter"}),"), the name of the token (in this example, we're calling it ",(0,s.jsx)(n.code,{children:"SubspaceTestToken"}),") and the token symbol (we're using ",(0,s.jsx)(n.code,{children:"TSSCtest"}),").\nLet\u2019s add a simple smart contract that has three functions - ",(0,s.jsx)(n.code,{children:"setNumber()"}),", ",(0,s.jsx)(n.code,{children:"increment()"})," and ",(0,s.jsx)(n.code,{children:"decrement()"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:' // SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \'@openzeppelin/contracts/token/ERC20/ERC20.sol\';\n\ncontract Counter is ERC20 {\n constructor() ERC20("AutonomysTestToken", "TSSCtest") {}\n\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n }\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-4",src:t(43513).A+"",width:"684",height:"350"})}),"\n",(0,s.jsxs)(n.ol,{start:"5",children:["\n",(0,s.jsxs)(n.li,{children:["Next, let\u2019s compile a ",(0,s.jsx)(n.code,{children:"Counter"})," contract. To compile, click on SOLIDITY COMPILER on the left and choose the compiler version that corresponds to the Solidity version of your contract. In our case, it\u2019s version 0.8.9.\nClick on ",(0,s.jsx)(n.code,{children:"Compile MyToken.sol"})," and check if it compiles correctly. If it does, you will see a green checkmark by the compiler."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-5",src:t(37264).A+"",width:"350",height:"569"})}),"\n",(0,s.jsxs)(n.ol,{start:"6",children:["\n",(0,s.jsxs)(n.li,{children:["Deploying a smart contract could be an expensive procedure, based on the gas costs associated with the transaction. That is why it\u2019s recommended that you thoroughly test the smart contracts for correctness before proceeding with deployment.\nTo test the contract, let\u2019s open the tests folder and have a look at ",(0,s.jsx)(n.code,{children:"MyToken.sol"})," created for us.",(0,s.jsx)(n.br,{}),"\n","Let\u2019s first try to run a test as is without making any changes."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-6",src:t(51083).A+"",width:"779",height:"400"})}),"\n",(0,s.jsxs)(n.ol,{start:"7",children:["\n",(0,s.jsx)(n.li,{children:"To run the tests, select SOLIDITY UNIT TESTING in the bar on the left and click Run."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-7",src:t(76930).A+"",width:"350",height:"417"})}),"\n",(0,s.jsxs)(n.ol,{start:"8",children:["\n",(0,s.jsxs)(n.li,{children:["As expected, the test failed because we manually changed the token name and symbol.\nThis is Test Driven Development (TDD) in action! In order to make the test pass, replace the internals of ",(0,s.jsx)(n.code,{children:"MyToken.sol"})," with the provided below code. In the test, we're adding a few assertions for the ",(0,s.jsx)(n.code,{children:"increment()"})," and ",(0,s.jsx)(n.code,{children:"decrement()"})," functions. In this example, we will set up an initial value of ",(0,s.jsx)(n.code,{children:"number"})," to 2 and ",(0,s.jsx)(n.code,{children:"increment"})," and then ",(0,s.jsx)(n.code,{children:"decrement"})," it by 1. We would expect the number to increase to 3 and then decrease back to 2."]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:' pragma solidity >=0.7.0 <0.9.0;\n import "remix_tests.sol";\n import "../contracts/MyToken.sol";\n\n contract CounterTest is Counter {\n\n function testTokenInitialValues() public {\n Assert.equal(name(), "AutonomysTestToken", "token name did not match");\n Assert.equal(symbol(), "TSSCtest", "token symbol did not match");\n Assert.equal(decimals(), 18, "token decimals did not match");\n Assert.equal(totalSupply(), 0, "token supply should be zero");\n }\n\n Counter public counter;\n\n function setUp() public {\n counter = new Counter();\n counter.setNumber(2);\n }\n\n function testIncrement() public {\n counter.increment();\n Assert.equal(counter.number(), 3, "test increment did not match");\n }\n\n function testDecrement() public {\n counter.decrement();\n Assert.equal(counter.number(), 2, "test decrement did not match");\n }\n }\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-8",src:t(81957).A+"",width:"778",height:"400"})}),"\n",(0,s.jsxs)(n.ol,{start:"9",children:["\n",(0,s.jsxs)(n.li,{children:["Great, all tests are now passing which means our smart contract ",(0,s.jsx)(n.code,{children:"Counter"})," is indeed working as we expect.\nWe\u2019re all set to deploy it now!"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-9",src:t(46044).A+"",width:"350",height:"447"})}),"\n",(0,s.jsxs)(n.ol,{start:"10",children:["\n",(0,s.jsx)(n.li,{children:"To deploy click on the DEPLOY AND RUN TRANSACTIONS tab on the left.\nRemix allows you to use one of the existing EVMs or inject your own provider through its integration with MetaMask.\nSince we already have a MetaMask Account set up, let\u2019s use this option."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-10",src:t(93710).A+"",width:"350",height:"595"})}),"\n",(0,s.jsxs)(n.ol,{start:"11",children:["\n",(0,s.jsx)(n.li,{children:"You will be prompted to confirm the password with MetaMask, just make sure that the network you\u2019re connected to is Autonomys EVM."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-11",src:t(93207).A+"",width:"350",height:"605"})}),"\n",(0,s.jsxs)(n.ol,{start:"12",children:["\n",(0,s.jsxs)(n.li,{children:["Adjust the gas limit and deploy your smart contract on Autonomys Core EVM.\nNow your transaction is recorded and you can interact with your smart contract at the bottom of the page - it's possible to call the functions ",(0,s.jsx)(n.code,{children:"increment()"})," and ",(0,s.jsx)(n.code,{children:"decrement()"})," as well as ",(0,s.jsx)(n.code,{children:"setNumber()"})]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["Do not attempt to speed up a transaction (do not include a tip on top of the gas fees). To read more about this, please refer to ",(0,s.jsx)(n.a,{href:"/develop/nova/introduction#important-note-about-submitting-a-transaction",children:"this section"}),"."]})}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["In some cases when deploying the script, you may experience ",(0,s.jsx)(n.strong,{children:'"No manual gas limit set"'})," or ",(0,s.jsx)(n.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,s.jsx)(n.a,{href:"/develop/nova/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Remix-12",src:t(69276).A+"",width:"350",height:"550"})}),"\n",(0,s.jsx)(n.p,{children:"Congratulations, you've just deployed your smart contract on Autonomys Core EVM!"})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1172:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-1-d0206fa95d420451ecdd17e94ef74788.png"},93710:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-10-1f9898d164cdb54a3eb26ddc2137d3e1.png"},93207:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-11-8fcd199526796d55c6cace291168a57f.png"},69276:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-12-c77f1688bb362b204a4095bca6fe75fc.png"},22639:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-2-00870623668f141197ba57f205a38ac5.png"},41094:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-3-6ecfd57605e0a80582c45edd1da2bef1.png"},43513:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-4-ebafc2bcd0f80ac8b135020f21b5c4ef.png"},37264:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-5-b0fd840e43bebb342b1c4b458f2e13ca.png"},51083:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-6-325d40445ae4448152be2fb307d30c1f.png"},76930:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-7-7596e211dcc6b1ec76a949572cc6d118.png"},81957:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-8-74aaeec76c2236665e0db5465bd5377a.png"},46044:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Remix-9-a04bacfa6217fc47e94f82673dfc3f33.png"},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(96540);const i={},o=s.createContext(i);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/662ffd2e.1918b713.js b/assets/js/662ffd2e.1918b713.js deleted file mode 100644 index c187b68ddac..00000000000 --- a/assets/js/662ffd2e.1918b713.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7286],{32170:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=t(74848),r=t(28453);const i={title:"Foundry",sidebar_position:1,description:"Testing and Deploying Smart Contracts using Foundry",slug:"/develop/nova/guides/foundry",keywords:["autonomys network","book getfoundry","foundry"]},o=void 0,a={id:"develop/nova/additional-guides/foundry_guide",title:"Foundry",description:"Testing and Deploying Smart Contracts using Foundry",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/foundry_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/nova/guides/foundry",permalink:"/develop/nova/guides/foundry",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/foundry_guide.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Foundry",sidebar_position:1,description:"Testing and Deploying Smart Contracts using Foundry",slug:"/develop/nova/guides/foundry",keywords:["autonomys network","book getfoundry","foundry"]},sidebar:"tutorialSidebar",previous:{title:"Setting up MetaMask",permalink:"/develop/nova/metamask"},next:{title:"Hardhat",permalink:"/develop/nova/guides/hardhat"}},c={},d=[{value:"Testing and deploying smart contracts using Foundry",id:"testing-and-deploying-smart-contracts-using-foundry",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h3,{id:"testing-and-deploying-smart-contracts-using-foundry",children:["Testing and deploying smart contracts using ",(0,s.jsx)(n.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Use ",(0,s.jsx)(n.code,{children:"foundryup"})," toolchain installer"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl -L https://foundry.paradigm.xyz | bash\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This will install ",(0,s.jsx)(n.code,{children:"foundryup"}),", then simply follow the instructions on-screen, which will make the foundryup command available in your CLI.\nRunning ",(0,s.jsx)(n.code,{children:"foundryup"})," by itself will install the latest precompiled binaries: ",(0,s.jsx)(n.code,{children:"forge"}),", ",(0,s.jsx)(n.code,{children:"cast"}),", ",(0,s.jsx)(n.code,{children:"anvil"}),", and ",(0,s.jsx)(n.code,{children:"chisel"}),". See ",(0,s.jsx)(n.code,{children:"foundryup --help"})," for more options."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["If you're on Windows, you will need to install and use ",(0,s.jsx)(n.a,{href:"https://gitforwindows.org/",children:"Git BASH"})," or ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/wsl/install",children:"WSL"}),", as your terminal, since Foundryup does not currently support ",(0,s.jsx)(n.code,{children:"PowerShell"})," or ",(0,s.jsx)(n.code,{children:"Cmd"}),"."]})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Once installed, create a project. Let\u2019s name it ",(0,s.jsx)(n.code,{children:"hello_subspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"To initialize the project, run"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge init hello_subspace\n"})}),"\n",(0,s.jsxs)(n.p,{children:["cd into ",(0,s.jsx)(n.code,{children:"hello_subspace"})," directory and let\u2019s have a look at the project\u2019s structure."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-1",src:t(88772).A+"",width:"350",height:"250"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["All the necessary repo structure was created automatically, so we can start writing and testing our smart contracts right away. As you can see, there are separate directories for storing smart contracts (src) and testing smart contracts (test).\nLet\u2019s have a look at the ",(0,s.jsx)(n.code,{children:"Counter.sol"})," smart contract and add a few more functions to the standard behavior. Our smart contract will have three functions: ",(0,s.jsx)(n.code,{children:"setNumber()"})," that sets the uint256 number to the provided value, ",(0,s.jsx)(n.code,{children:"increment()"})," which increases the value by 1 and ",(0,s.jsx)(n.code,{children:"decrement()"})," which decreases the value by 1."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ncontract Counter {\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n}\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Let\u2019s make sure that all functions are working properly by adding a couple of tests to the ",(0,s.jsx)(n.code,{children:"Counter.t.sol"})," test file and check if they pass."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport "forge-std/Test.sol";\nimport "../src/Counter.sol";\n\ncontract CounterTest is Test {\n Counter public counter;\n\n function setUp() public {\n counter = new Counter();\n counter.setNumber(2);\n }\n\n function testIncrement() public {\n counter.increment();\n assertEq(counter.number(), 3);\n }\n\n function testSetNumber(uint256 x) public {\n counter.setNumber(x);\n assertEq(counter.number(), x);\n }\n\n function testDecrement() public {\n counter.decrement();\n assertEq(counter.number(), 1);\n }\n}\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In our tests, we first set the initial value of number to two, then check if function ",(0,s.jsx)(n.code,{children:"increment()"})," increases the value by 1 and if ",(0,s.jsx)(n.code,{children:"decrement()"})," decreases the value by 1.\nLet\u2019s build a project by running:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge build\n"})}),"\n",(0,s.jsx)(n.p,{children:"and ensure that tests are working as expected by running"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge test\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-2",src:t(27071).A+"",width:"1131",height:"350"})}),"\n",(0,s.jsx)(n.p,{children:"Nice, all tests are passing, meaning the smart contract is working as expected."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Next, there are ",(0,s.jsx)(n.strong,{children:"two things"})," we need to set, in order to ",(0,s.jsx)(n.strong,{children:"deploy our smart contract"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"We need to connect a wallet that has sufficient balance of TSSC to cover the gas fees."}),"\n",(0,s.jsx)(n.li,{children:"We need to set an environment variable we will use later."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In order to make our lives easier, let\u2019s create a new ",(0,s.jsx)(n.code,{children:"Makefile"})," as well as ",(0,s.jsx)(n.code,{children:".env"})," file at the root of our project.\n",(0,s.jsx)(n.code,{children:".env"})," files are typically used to store environment variables for your application. They are particularly useful for managing settings that change between deployment environments (e.g., development, testing, staging, and production), and for storing sensitive information."]}),"\n",(0,s.jsx)(n.p,{children:"Environment variables can include database connection details, API keys, external resource URIs, or other configuration variables that might change depending on the environment in which the application is running. In our case, we would use it to point to our Core-EVM RPC url by setting"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"RPC_URL=https://nova-0.gemini-3h.subspace.network/ws\n"})}),"\n",(0,s.jsx)(n.p,{children:"And then set a private key for the EVM-compatible wallet"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"PRIVATE_KEY=\u201dyour_private_key_value\u201d\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's important to note that .env files should not be committed to your source control (like Git), especially when they contain sensitive data, like your private key. To prevent this, add .env to your .gitignore file. This helps to keep sensitive keys secure and avoids the risk of exposing them in the application's code or version control history."})}),"\n",(0,s.jsx)(n.p,{children:"In the Makefile, let\u2019s create shortcuts to the main features of the application"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# include .env file and export its env vars\n-include .env\n\n# Builds\nbuild:\n @forge clean && forge build --optimize --optimizer-runs 1000000\n\n# Deployment\ndeploy:\n @forge create Counter --private-key ${PRIVATE_KEY} --rpc-url ${RPC_URL}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["We're importing the values for a ",(0,s.jsx)(n.code,{children:"PRIVATE_KEY"})," and ",(0,s.jsx)(n.code,{children:"RPC_URL"})," from the ",(0,s.jsx)(n.code,{children:".env"})," file."]}),"\n",(0,s.jsxs)(n.p,{children:["This allows us to run ",(0,s.jsx)(n.code,{children:"make build"})," for building the project and ",(0,s.jsx)(n.code,{children:"make deploy"})," for deploying the project pointing to the provided RPC and using the provided private_key."]}),"\n",(0,s.jsx)(n.p,{children:"Let\u2019s run"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"make build\n"})}),"\n",(0,s.jsx)(n.p,{children:"to make sure it\u2019s working properly."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-3",src:t(47094).A+"",width:"1422",height:"350"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In order to deploy your contract using the specified ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"RPC"})})," and ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"PRIVATE_KEY"})})," just run"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"make deploy\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["Do not attempt to speed up a transaction (do not include a tip on top of the gas fees). To read more about this, please refer to ",(0,s.jsx)(n.a,{href:"/develop/nova/introduction#important-note-about-submitting-a-transaction",children:"this section"}),"."]})}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["In some cases when deploying the script, you may experience ",(0,s.jsx)(n.strong,{children:'"No manual gas limit set"'})," or ",(0,s.jsx)(n.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,s.jsx)(n.a,{href:"/develop/nova/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Congratulations"}),", you've successfully deployed your smart contract on Autonomys EVM!"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},88772:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-1-8a5c8b8884057c2e65c262979101e51e.png"},27071:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-2-0905b0bb14b8f7886ef052b7a0722432.png"},47094:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-3-38f4e98f2679f9e6f8f94bdc7c392e4e.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(96540);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/662ffd2e.5741624e.js b/assets/js/662ffd2e.5741624e.js new file mode 100644 index 00000000000..5c3f9858097 --- /dev/null +++ b/assets/js/662ffd2e.5741624e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7286],{32170:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=t(74848),r=t(28453);const i={title:"Foundry",sidebar_position:1,description:"Testing and Deploying Smart Contracts using Foundry",slug:"/develop/auto-evm/guides/foundry",keywords:["autonomys network","book getfoundry","foundry"]},o=void 0,a={id:"develop/nova/additional-guides/foundry_guide",title:"Foundry",description:"Testing and Deploying Smart Contracts using Foundry",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/foundry_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/auto-evm/guides/foundry",permalink:"/develop/auto-evm/guides/foundry",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/foundry_guide.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Foundry",sidebar_position:1,description:"Testing and Deploying Smart Contracts using Foundry",slug:"/develop/auto-evm/guides/foundry",keywords:["autonomys network","book getfoundry","foundry"]},sidebar:"tutorialSidebar",previous:{title:"Setting up MetaMask",permalink:"/develop/auto-evm/metamask"},next:{title:"Hardhat",permalink:"/develop/auto-evm/guides/hardhat"}},c={},d=[{value:"Testing and deploying smart contracts using Foundry",id:"testing-and-deploying-smart-contracts-using-foundry",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h3,{id:"testing-and-deploying-smart-contracts-using-foundry",children:["Testing and deploying smart contracts using ",(0,s.jsx)(n.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Use ",(0,s.jsx)(n.code,{children:"foundryup"})," toolchain installer"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl -L https://foundry.paradigm.xyz | bash\n"})}),"\n",(0,s.jsxs)(n.p,{children:["This will install ",(0,s.jsx)(n.code,{children:"foundryup"}),", then simply follow the instructions on-screen, which will make the foundryup command available in your CLI.\nRunning ",(0,s.jsx)(n.code,{children:"foundryup"})," by itself will install the latest precompiled binaries: ",(0,s.jsx)(n.code,{children:"forge"}),", ",(0,s.jsx)(n.code,{children:"cast"}),", ",(0,s.jsx)(n.code,{children:"anvil"}),", and ",(0,s.jsx)(n.code,{children:"chisel"}),". See ",(0,s.jsx)(n.code,{children:"foundryup --help"})," for more options."]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["If you're on Windows, you will need to install and use ",(0,s.jsx)(n.a,{href:"https://gitforwindows.org/",children:"Git BASH"})," or ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/windows/wsl/install",children:"WSL"}),", as your terminal, since Foundryup does not currently support ",(0,s.jsx)(n.code,{children:"PowerShell"})," or ",(0,s.jsx)(n.code,{children:"Cmd"}),"."]})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Once installed, create a project. Let\u2019s name it ",(0,s.jsx)(n.code,{children:"hello_subspace"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"To initialize the project, run"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge init hello_subspace\n"})}),"\n",(0,s.jsxs)(n.p,{children:["cd into ",(0,s.jsx)(n.code,{children:"hello_subspace"})," directory and let\u2019s have a look at the project\u2019s structure."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-1",src:t(88772).A+"",width:"350",height:"250"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["All the necessary repo structure was created automatically, so we can start writing and testing our smart contracts right away. As you can see, there are separate directories for storing smart contracts (src) and testing smart contracts (test).\nLet\u2019s have a look at the ",(0,s.jsx)(n.code,{children:"Counter.sol"})," smart contract and add a few more functions to the standard behavior. Our smart contract will have three functions: ",(0,s.jsx)(n.code,{children:"setNumber()"})," that sets the uint256 number to the provided value, ",(0,s.jsx)(n.code,{children:"increment()"})," which increases the value by 1 and ",(0,s.jsx)(n.code,{children:"decrement()"})," which decreases the value by 1."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ncontract Counter {\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n}\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Let\u2019s make sure that all functions are working properly by adding a couple of tests to the ",(0,s.jsx)(n.code,{children:"Counter.t.sol"})," test file and check if they pass."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport "forge-std/Test.sol";\nimport "../src/Counter.sol";\n\ncontract CounterTest is Test {\n Counter public counter;\n\n function setUp() public {\n counter = new Counter();\n counter.setNumber(2);\n }\n\n function testIncrement() public {\n counter.increment();\n assertEq(counter.number(), 3);\n }\n\n function testSetNumber(uint256 x) public {\n counter.setNumber(x);\n assertEq(counter.number(), x);\n }\n\n function testDecrement() public {\n counter.decrement();\n assertEq(counter.number(), 1);\n }\n}\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In our tests, we first set the initial value of number to two, then check if function ",(0,s.jsx)(n.code,{children:"increment()"})," increases the value by 1 and if ",(0,s.jsx)(n.code,{children:"decrement()"})," decreases the value by 1.\nLet\u2019s build a project by running:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge build\n"})}),"\n",(0,s.jsx)(n.p,{children:"and ensure that tests are working as expected by running"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"forge test\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-2",src:t(27071).A+"",width:"1131",height:"350"})}),"\n",(0,s.jsx)(n.p,{children:"Nice, all tests are passing, meaning the smart contract is working as expected."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Next, there are ",(0,s.jsx)(n.strong,{children:"two things"})," we need to set, in order to ",(0,s.jsx)(n.strong,{children:"deploy our smart contract"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"We need to connect a wallet that has sufficient balance of tAI3 to cover the gas fees."}),"\n",(0,s.jsx)(n.li,{children:"We need to set an environment variable we will use later."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["In order to make our lives easier, let\u2019s create a new ",(0,s.jsx)(n.code,{children:"Makefile"})," as well as ",(0,s.jsx)(n.code,{children:".env"})," file at the root of our project.\n",(0,s.jsx)(n.code,{children:".env"})," files are typically used to store environment variables for your application. They are particularly useful for managing settings that change between deployment environments (e.g., development, testing, staging, and production), and for storing sensitive information."]}),"\n",(0,s.jsx)(n.p,{children:"Environment variables can include database connection details, API keys, external resource URIs, or other configuration variables that might change depending on the environment in which the application is running. In our case, we would use it to point to our Core-EVM RPC url by setting"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"RPC_URL=https://nova-0.gemini-3h.subspace.network/ws\n"})}),"\n",(0,s.jsx)(n.p,{children:"And then set a private key for the EVM-compatible wallet"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"PRIVATE_KEY=\u201dyour_private_key_value\u201d\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"It's important to note that .env files should not be committed to your source control (like Git), especially when they contain sensitive data, like your private key. To prevent this, add .env to your .gitignore file. This helps to keep sensitive keys secure and avoids the risk of exposing them in the application's code or version control history."})}),"\n",(0,s.jsx)(n.p,{children:"In the Makefile, let\u2019s create shortcuts to the main features of the application"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# include .env file and export its env vars\n-include .env\n\n# Builds\nbuild:\n @forge clean && forge build --optimize --optimizer-runs 1000000\n\n# Deployment\ndeploy:\n @forge create Counter --private-key ${PRIVATE_KEY} --rpc-url ${RPC_URL}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["We're importing the values for a ",(0,s.jsx)(n.code,{children:"PRIVATE_KEY"})," and ",(0,s.jsx)(n.code,{children:"RPC_URL"})," from the ",(0,s.jsx)(n.code,{children:".env"})," file."]}),"\n",(0,s.jsxs)(n.p,{children:["This allows us to run ",(0,s.jsx)(n.code,{children:"make build"})," for building the project and ",(0,s.jsx)(n.code,{children:"make deploy"})," for deploying the project pointing to the provided RPC and using the provided private_key."]}),"\n",(0,s.jsx)(n.p,{children:"Let\u2019s run"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"make build\n"})}),"\n",(0,s.jsx)(n.p,{children:"to make sure it\u2019s working properly."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Foundry-3",src:t(47094).A+"",width:"1422",height:"350"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In order to deploy your contract using the specified ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"RPC"})})," and ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"PRIVATE_KEY"})})," just run"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"make deploy\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["Do not attempt to speed up a transaction (do not include a tip on top of the gas fees). To read more about this, please refer to ",(0,s.jsx)(n.a,{href:"/develop/auto-evm/introduction#important-note-about-submitting-a-transaction",children:"this section"}),"."]})}),"\n",(0,s.jsx)(n.admonition,{type:"caution",children:(0,s.jsxs)(n.p,{children:["In some cases when deploying the script, you may experience ",(0,s.jsx)(n.strong,{children:'"No manual gas limit set"'})," or ",(0,s.jsx)(n.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,s.jsx)(n.a,{href:"/develop/auto-evm/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Congratulations"}),", you've successfully deployed your smart contract on Autonomys EVM!"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},88772:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-1-8a5c8b8884057c2e65c262979101e51e.png"},27071:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-2-0905b0bb14b8f7886ef052b7a0722432.png"},47094:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/Foundry-3-38f4e98f2679f9e6f8f94bdc7c392e4e.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(96540);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/66a8244a.840d0327.js b/assets/js/66a8244a.840d0327.js deleted file mode 100644 index 6093248f10d..00000000000 --- a/assets/js/66a8244a.840d0327.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4491],{75973:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"\u264a Nova EVM","description":"Developers\' guide on utilizing Autonomys Network","slug":"develop/nova","permalink":"/develop/nova","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Drive","permalink":"/develop/auto-sdk/drive"},"next":{"title":"Introduction","permalink":"/develop/nova/introduction"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/a5f8ae67.3dcacda4.js b/assets/js/a5f8ae67.3dcacda4.js deleted file mode 100644 index b2869792095..00000000000 --- a/assets/js/a5f8ae67.3dcacda4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1400],{67413:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var i=t(74848),o=t(28453);const s={title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK"]},r=void 0,l={id:"develop/intro",title:"Getting Started",description:"A Getting Started guide for the Autonomys Network",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/intro.md",sourceDirName:"develop",slug:"/develop/intro",permalink:"/develop/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK"]},sidebar:"tutorialSidebar",previous:{title:"Timekeeping",permalink:"/farming/timekeeper"},next:{title:"Auto SDK",permalink:"/develop/auto-sdk"}},a={},d=[{value:"Introduction",id:"introduction",level:3},{value:"Is It Difficult to Build Applications on Autonomys?",id:"is-it-difficult-to-build-applications-on-autonomys",level:3},{value:"Development Options",id:"development-options",level:2},{value:"Auto SDK",id:"auto-sdk",level:2},{value:"Key Features:",id:"key-features",level:3},{value:"Getting Started with Auto SDK",id:"getting-started-with-auto-sdk",level:3},{value:"Nova - EVM Compatible Domain",id:"nova---evm-compatible-domain",level:2},{value:"Key Features:",id:"key-features-1",level:3},{value:"Why Use Nova?",id:"why-use-nova",level:3},{value:"Getting Started with Nova",id:"getting-started-with-nova",level:3},{value:"RPC endpoints",id:"rpc-endpoints",level:2},{value:"Consensus",id:"consensus",level:4},{value:"Nova",id:"nova",level:4},{value:"Auto ID",id:"auto-id",level:4}];function u(e){const n={a:"a",admonition:"admonition",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(n.p,{children:"Autonomys is a secure, scalable, and decentralized blockchain that resolves the blockchain trilemma without making compromises. It offers a platform where developers can build applications with ease, leveraging innovative protocols and familiar tools. This guide provides an overview of the development options available on the Autonomys Network."}),"\n",(0,i.jsx)(n.h3,{id:"is-it-difficult-to-build-applications-on-autonomys",children:"Is It Difficult to Build Applications on Autonomys?"}),"\n",(0,i.jsx)(n.p,{children:"Absolutely not! Our primary objective is to minimize barriers to entry for both farmers and developers."}),"\n",(0,i.jsx)(n.p,{children:"We pride ourselves on enabling unlimited possibilities - there are no boundaries!"}),"\n",(0,i.jsx)(n.h2,{id:"development-options",children:"Development Options"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Developers"})," can choose to utilize ",(0,i.jsx)(n.strong,{children:"Auto SDK"})," - a comprehensive toolkit designed to simplify development on the Autonomys Network, or ",(0,i.jsx)(n.strong,{children:"Nova"})," - Autonomys's EVM-compatible domain, allowing you to utilize all the familiar functionalities available on networks like Ethereum. Soon, you'll also be able to build your own local custom virtual machines."]}),"\n",(0,i.jsx)(n.h2,{id:"auto-sdk",children:(0,i.jsx)(n.a,{href:"/develop/auto-sdk/intro",children:"Auto SDK"})}),"\n",(0,i.jsx)(n.h3,{id:"key-features",children:"Key Features:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Modular Packages"}),": The SDK is organized into packages like auto-utils, auto-consensus, and auto-id. This partitions functionality intuitively and allows you to import only what you need."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Simplified Interactions"}),": Abstracts the complexity of blockchain operations with high-level functions."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Flexibility"}),": Suitable for building decentralized applications (dApps) and services with ease."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"getting-started-with-auto-sdk",children:"Getting Started with Auto SDK"}),"\n",(0,i.jsxs)(n.p,{children:["To start using Auto SDK, refer to our ",(0,i.jsx)(n.a,{href:"/develop/auto-sdk/intro",children:"Setup Instructions"})," to clone the repository, install dependencies, and run tests. The SDK is designed to be developer-friendly, ensuring you can get up and running quickly."]}),"\n",(0,i.jsx)(n.h2,{id:"nova---evm-compatible-domain",children:(0,i.jsx)(n.a,{href:"/develop/nova/introduction",children:"Nova - EVM Compatible Domain"})}),"\n",(0,i.jsxs)(n.admonition,{type:"info",children:[(0,i.jsxs)(n.p,{children:["Currently, Nova is available exclusively on the ",(0,i.jsx)(n.strong,{children:"Gemini-3h"})," network. It will soon be accessible on the new test network, ",(0,i.jsx)(n.strong,{children:"Taurus"}),"."]}),(0,i.jsxs)(n.p,{children:["Nova's availability on the mainnet is planned for ",(0,i.jsx)(n.strong,{children:"Phase 2 of the mainnet launch"}),". For further details, please refer to our ",(0,i.jsx)(n.a,{href:"https://forum.autonomys.xyz/t/phased-launch-roadmap/4414",children:"Phased Launch Roadmap"})," post on the forum."]})]}),"\n",(0,i.jsx)(n.h3,{id:"key-features-1",children:"Key Features:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Solidity Smart Contracts"}),": Write and deploy smart contracts using Solidity, just as you would on Ethereum."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Tool Compatibility"}),": Any tool available for Ethereum development - like Remix, Truffle, or Hardhat - is compatible with Nova."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Seamless Transition"}),": Developers familiar with Ethereum can transition to Autonomys without a steep learning curve."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"why-use-nova",children:"Why Use Nova?"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Familiar Environment"}),": Leverage existing knowledge and resources from the Ethereum ecosystem."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Scalability and Security"}),": Benefit from Autonomys's scalable and secure infrastructure while using tried-and-true development practices."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Interoperability"}),": Create applications that can interact seamlessly with other EVM-compatible networks."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"getting-started-with-nova",children:"Getting Started with Nova"}),"\n",(0,i.jsxs)(n.p,{children:["To start using Nova, refer to our ",(0,i.jsx)(n.a,{href:"/develop/nova/introduction",children:"Guides and Manuals"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"rpc-endpoints",children:"RPC endpoints"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"List of Currently Active RPCs endpoints"})}),"\n",(0,i.jsx)(n.h4,{id:"consensus",children:"Consensus"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"wss://rpc-0.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(n.li,{children:"wss://rpc-1.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(n.li,{children:"wss://rpc.taurus.subspace.foundation/ws"}),"\n",(0,i.jsx)(n.li,{children:"wss://rpc.mainnet.subspace.foundation/ws"}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Nova",type:"tip",children:(0,i.jsx)(n.p,{children:"Currently, Nova is available exclusively on the gemini-3h network. It will soon be accessible on the taurus network."})}),"\n",(0,i.jsx)(n.h4,{id:"nova",children:"Nova"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"wss://nova-0.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(n.li,{children:"wss://nova-1.gemini-3h.subspace.network/ws"}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Auto ID",type:"tip",children:(0,i.jsx)(n.p,{children:"Currently, Auto ID is available exclusively on the gemini-3h network. It will soon be accessible on the taurus network."})}),"\n",(0,i.jsx)(n.h4,{id:"auto-id",children:"Auto ID"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"wss://autoid-0.gemini-3h.subspace.network/ws"}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>l});var i=t(96540);const o={},s=i.createContext(o);function r(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a5f8ae67.89fe5d8b.js b/assets/js/a5f8ae67.89fe5d8b.js new file mode 100644 index 00000000000..4b597c9fe4c --- /dev/null +++ b/assets/js/a5f8ae67.89fe5d8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1400],{67413:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var i=n(74848),o=n(28453);const s={title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK"]},r=void 0,l={id:"develop/intro",title:"Getting Started",description:"A Getting Started guide for the Autonomys Network",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/intro.md",sourceDirName:"develop",slug:"/develop/intro",permalink:"/develop/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK"]},sidebar:"tutorialSidebar",previous:{title:"Timekeeping",permalink:"/farming/timekeeper"},next:{title:"Auto SDK",permalink:"/develop/auto-sdk"}},a={},d=[{value:"Introduction",id:"introduction",level:3},{value:"Is It Difficult to Build Applications on Autonomys?",id:"is-it-difficult-to-build-applications-on-autonomys",level:3},{value:"Development Options",id:"development-options",level:2},{value:"Auto SDK",id:"auto-sdk",level:2},{value:"Key Features:",id:"key-features",level:3},{value:"Getting Started with Auto SDK",id:"getting-started-with-auto-sdk",level:3},{value:"Auto EVM - EVM Compatible Domain",id:"auto-evm---evm-compatible-domain",level:2},{value:"Key Features:",id:"key-features-1",level:3},{value:"Why Use Auto EVM?",id:"why-use-auto-evm",level:3},{value:"Getting Started with Auto EVM",id:"getting-started-with-auto-evm",level:3},{value:"RPC endpoints",id:"rpc-endpoints",level:2},{value:"Consensus",id:"consensus",level:4},{value:"Auto EVM",id:"auto-evm",level:4},{value:"Auto ID",id:"auto-id",level:4}];function u(e){const t={a:"a",admonition:"admonition",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(t.p,{children:"Autonomys is a secure, scalable, and decentralized blockchain that resolves the blockchain trilemma without making compromises. It offers a platform where developers can build applications with ease, leveraging innovative protocols and familiar tools. This guide provides an overview of the development options available on the Autonomys Network."}),"\n",(0,i.jsx)(t.h3,{id:"is-it-difficult-to-build-applications-on-autonomys",children:"Is It Difficult to Build Applications on Autonomys?"}),"\n",(0,i.jsx)(t.p,{children:"Absolutely not! Our primary objective is to minimize barriers to entry for both farmers and developers."}),"\n",(0,i.jsx)(t.p,{children:"We pride ourselves on enabling unlimited possibilities - there are no boundaries!"}),"\n",(0,i.jsx)(t.h2,{id:"development-options",children:"Development Options"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Developers"})," can choose to utilize ",(0,i.jsx)(t.strong,{children:"Auto SDK"})," - a comprehensive toolkit designed to simplify development on the Autonomys Network, or ",(0,i.jsx)(t.strong,{children:"Auto EVM"})," - Autonomys's EVM-compatible domain, allowing you to utilize all the familiar functionalities available on networks like Ethereum. Soon, you'll also be able to build your own local custom virtual machines."]}),"\n",(0,i.jsx)(t.h2,{id:"auto-sdk",children:(0,i.jsx)(t.a,{href:"/develop/auto-sdk/intro",children:"Auto SDK"})}),"\n",(0,i.jsx)(t.h3,{id:"key-features",children:"Key Features:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Modular Packages"}),": The SDK is organized into packages like auto-utils, auto-consensus, and auto-id. This partitions functionality intuitively and allows you to import only what you need."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Simplified Interactions"}),": Abstracts the complexity of blockchain operations with high-level functions."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Flexibility"}),": Suitable for building decentralized applications (dApps) and services with ease."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"getting-started-with-auto-sdk",children:"Getting Started with Auto SDK"}),"\n",(0,i.jsxs)(t.p,{children:["To start using Auto SDK, refer to our ",(0,i.jsx)(t.a,{href:"/develop/auto-sdk/intro",children:"Setup Instructions"})," to clone the repository, install dependencies, and run tests. The SDK is designed to be developer-friendly, ensuring you can get up and running quickly."]}),"\n",(0,i.jsx)(t.h2,{id:"auto-evm---evm-compatible-domain",children:(0,i.jsx)(t.a,{href:"/develop/auto-evm/introduction",children:"Auto EVM - EVM Compatible Domain"})}),"\n",(0,i.jsxs)(t.admonition,{type:"info",children:[(0,i.jsxs)(t.p,{children:["Currently, Auto EVM is available exclusively on the ",(0,i.jsx)(t.strong,{children:"Taurus"})," network."]}),(0,i.jsxs)(t.p,{children:["Auto EVM's availability on the mainnet is planned for ",(0,i.jsx)(t.strong,{children:"Phase 2 of the mainnet launch"}),". For further details, please refer to our ",(0,i.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/phased-launch-roadmap/4414",children:"Phased Launch Roadmap"})," post on the forum."]})]}),"\n",(0,i.jsx)(t.h3,{id:"key-features-1",children:"Key Features:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Solidity Smart Contracts"}),": Write and deploy smart contracts using Solidity, just as you would on Ethereum."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Tool Compatibility"}),": Any tool available for Ethereum development - like Remix, Truffle, or Hardhat - is compatible with Auto EVM."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Seamless Transition"}),": Developers familiar with Ethereum can transition to Autonomys without a steep learning curve."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"why-use-auto-evm",children:"Why Use Auto EVM?"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Familiar Environment"}),": Leverage existing knowledge and resources from the Ethereum ecosystem."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Scalability and Security"}),": Benefit from Autonomys's scalable and secure infrastructure while using tried-and-true development practices."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Interoperability"}),": Create applications that can interact seamlessly with other EVM-compatible networks."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"getting-started-with-auto-evm",children:"Getting Started with Auto EVM"}),"\n",(0,i.jsxs)(t.p,{children:["To start using Auto EVM, refer to our ",(0,i.jsx)(t.a,{href:"/develop/auto-evm/introduction",children:"Guides and Manuals"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"rpc-endpoints",children:"RPC endpoints"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"List of Currently Active RPCs endpoints"})}),"\n",(0,i.jsx)(t.h4,{id:"consensus",children:"Consensus"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"wss://rpc-0.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(t.li,{children:"wss://rpc-1.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(t.li,{children:"wss://rpc.taurus.subspace.foundation/ws"}),"\n",(0,i.jsx)(t.li,{children:"wss://rpc.mainnet.subspace.foundation/ws"}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{title:"Auto EVM",type:"tip",children:(0,i.jsx)(t.p,{children:"Currently, Auto EVM is available exclusively on the taurus network. Availability on mainnet is planned in Q1, 2025"})}),"\n",(0,i.jsx)(t.h4,{id:"auto-evm",children:"Auto EVM"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"wss://nova-0.gemini-3h.subspace.network/ws"}),"\n",(0,i.jsx)(t.li,{children:"wss://nova-1.gemini-3h.subspace.network/ws"}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{title:"Auto ID",type:"tip",children:(0,i.jsx)(t.p,{children:"Currently, Auto ID is available exclusively on the gemini-3h network. It will soon be accessible on the taurus network."})}),"\n",(0,i.jsx)(t.h4,{id:"auto-id",children:"Auto ID"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"wss://autoid-0.gemini-3h.subspace.network/ws"}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>l});var i=n(96540);const o={},s=i.createContext(o);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b23e3acb.07f314fc.js b/assets/js/b23e3acb.07f314fc.js deleted file mode 100644 index c78c6478434..00000000000 --- a/assets/js/b23e3acb.07f314fc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3372],{60373:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var o=t(74848),r=t(28453);const s={title:"Hardhat",sidebar_position:2,description:"Testing and Deploying Smart Contracts using HardHat",slug:"/develop/nova/guides/hardhat",keywords:["autonomys network","hardhat"]},a=void 0,i={id:"develop/nova/additional-guides/hardhat_guide",title:"Hardhat",description:"Testing and Deploying Smart Contracts using HardHat",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/hardhat_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/nova/guides/hardhat",permalink:"/develop/nova/guides/hardhat",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/hardhat_guide.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Hardhat",sidebar_position:2,description:"Testing and Deploying Smart Contracts using HardHat",slug:"/develop/nova/guides/hardhat",keywords:["autonomys network","hardhat"]},sidebar:"tutorialSidebar",previous:{title:"Foundry",permalink:"/develop/nova/guides/foundry"},next:{title:"Local Development",permalink:"/develop/nova/guides/local-development"}},c={},d=[{value:"Hardhat testing and deployment",id:"hardhat-testing-and-deployment",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h3,{id:"hardhat-testing-and-deployment",children:"Hardhat testing and deployment"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.p,{children:"Hardhat is an excellent tool that facilitates building on the Ethereum Virtual Machine. It helps developers manage and automate the recurring tasks that are inherent to the process of building smart contracts and dApps, and it allows them to easily introduce more functionality around this workflow. This includes compiling and testing at the very core. Flexible deployment options also allow you to point to the Autonomys EVM domain RPC to deploy your contracts and dApps."}),"\n",(0,o.jsxs)(n.p,{children:["Official documentation for Hardhat is available ",(0,o.jsx)(n.a,{href:"https://hardhat.org/docs",children:"on their website"}),", but this guide will cover everything required to get you started."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Prerequisites"}),"\nMake sure you have ",(0,o.jsx)(n.a,{href:"https://nodejs.org/en",children:"NodeJS"})," version >=16.0 installed."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Open a new terminal and run these commands to create a new folder for the project."}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"mkdir subspace-hardhat\ncd subspace-hardhat\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsx)(n.li,{children:"Then initialize an npm project as shown below. You'll be prompted to answer some questions."}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"npm install --save-dev hardhat\nnpm install --save-dev @openzeppelin/contracts\nnpx hardhat\n"})}),"\n",(0,o.jsx)(n.p,{children:'Select "Create a JavaScript Project" from the list of the available options. Select project root folder and select to create a .gitignore file (optional).'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-1",src:t(22745).A+"",width:"492",height:"196"})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsxs)(n.li,{children:["Right after you create your workspace, you will notice several folders. All of your contracts will reside inside the ",(0,o.jsx)(n.code,{children:"contracts"})," folder, deployment scripts are available inside the ",(0,o.jsx)(n.code,{children:"scripts"})," folder, and tests can be found inside the ",(0,o.jsx)(n.code,{children:"test"})," folder. Click on the contracts folder and open ",(0,o.jsx)(n.code,{children:"Lock.sol"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-3",src:t(95691).A+"",width:"423",height:"246"})}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsxs)(n.li,{children:["When in ",(0,o.jsx)(n.code,{children:"Lock.sol"}),", you can change the name of your contract (in the example, to ",(0,o.jsx)(n.code,{children:"Counter"}),"), the name of the token (in this example, we're calling it ",(0,o.jsx)(n.code,{children:"AutonomysTestToken"}),") and the token symbol (we're using ",(0,o.jsx)(n.code,{children:"TSSCtest"}),")."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Let\u2019s add a simple smart contract that has three functions - ",(0,o.jsx)(n.code,{children:"setNumber()"}),", ",(0,o.jsx)(n.code,{children:"increment()"})," and ",(0,o.jsx)(n.code,{children:"decrement()"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\nimport \'@openzeppelin/contracts/token/ERC20/ERC20.sol\';\n\ncontract Counter is ERC20 {\n constructor() ERC20("AutonomysTestToken", "TSSCtest") {}\n\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Let's also rename the filename to ",(0,o.jsx)(n.code,{children:"Counter.sol"})," for consistency."]}),"\n",(0,o.jsxs)(n.ol,{start:"5",children:["\n",(0,o.jsx)(n.li,{children:"Deploying a smart contract can be an expensive procedure due to the gas costs associated with the transaction. Hence, it\u2019s advisable to thoroughly test the smart contracts for correctness before proceeding with deployment. To test the contract, open the tests folder and examine the Lock.js file created for us. Replace the internals of the file with the following code:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'const { expect } = require("chai");\n\ndescribe("Counter", function() {\nlet Counter;\nlet counter;\nlet owner;\nlet addr1;\n\nbeforeEach(async function() {\n Counter = await ethers.getContractFactory("Counter");\n [owner, addr1] = await ethers.getSigners();\n\n counter = await Counter.deploy();\n});\n\ndescribe("Counter operations", function() {\n it("Should return initial value of zero", async function() {\n expect(await counter.number()).to.equal(0);\n });\n\n it("Should set number to a new value", async function() {\n await counter.setNumber(5);\n expect(await counter.number()).to.equal(5);\n });\n\n it("Should increment the number", async function() {\n await counter.setNumber(5);\n await counter.increment();\n expect(await counter.number()).to.equal(6);\n });\n\n it("Should decrement the number", async function() {\n await counter.setNumber(5);\n await counter.decrement();\n expect(await counter.number()).to.equal(4);\n });\n});\n});\n'})}),"\n",(0,o.jsxs)(n.p,{children:["For consistency, let's also rename ",(0,o.jsx)(n.code,{children:"Lock.js"})," to ",(0,o.jsx)(n.code,{children:"CounterTest.js"})]}),"\n",(0,o.jsxs)(n.ol,{start:"7",children:["\n",(0,o.jsxs)(n.li,{children:["To run the test, simply type ",(0,o.jsx)(n.code,{children:"npx hardhat test"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-4",src:t(49780).A+"",width:"553",height:"214"})}),"\n",(0,o.jsx)(n.p,{children:"Great, looks like everything is working as expected. We\u2019re all set for the deployment!"}),"\n",(0,o.jsxs)(n.ol,{start:"8",children:["\n",(0,o.jsxs)(n.li,{children:["In order to deploy the contract, we need to set a deployment network for hardhat.\nOpen ",(0,o.jsx)(n.code,{children:"hardhat.config.js"})," file and add the subspace to the list of networks."]}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'require("@nomicfoundation/hardhat-toolbox");\nmodule.exports = {\nsolidity: "0.8.19",\nnetworks: {\n subspace: {\n url: "https://nova-0.gemini-3h.subspace.network/ws",\n accounts: ["private_key_to_your_account"]\n }\n}\n};\n'})}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["Be careful to not commit hardhat.config.js file as it contain your private key. You can use NPM tools like ",(0,o.jsx)(n.a,{href:"https://www.npmjs.com/package/dotenv",children:"dotenv"})," to securely store your private keys in the ",(0,o.jsx)(n.code,{children:".env"})," file."]})}),"\n",(0,o.jsxs)(n.ol,{start:"9",children:["\n",(0,o.jsxs)(n.li,{children:["Open ",(0,o.jsx)(n.code,{children:"deploy.js"})," file and replace the content with the code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-5",src:t(70909).A+"",width:"619",height:"258"})}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'const hre = require("hardhat");\n\nasync function main() {\nconst Contract = await hre.ethers.getContractFactory("Counter");\nconst contract = await Contract.deploy();\n\nconsole.log("Contract deployed to:", contract.target);\n}\n\nmain().catch((error) => {\nconsole.error(error);\nprocess.exitCode = 1;\n});\n'})}),"\n",(0,o.jsxs)(n.ol,{start:"10",children:["\n",(0,o.jsxs)(n.li,{children:["You're all set to deploy your smart contract on Autonomys Network!\nIn order to deploy, run ",(0,o.jsx)(n.code,{children:"npx hardhat run scripts/deploy.js --network subspace"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["This command will deploy your smart contract on the network we've just specified in ",(0,o.jsx)(n.code,{children:"hardhat.config.js"})," file."]}),"\n",(0,o.jsxs)(n.p,{children:["In case of success deployment, you should see ",(0,o.jsx)(n.code,{children:"Contract deployed to: transaction hash"}),"."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-6",src:t(29670).A+"",width:"633",height:"89"})}),"\n",(0,o.jsx)(n.admonition,{type:"caution",children:(0,o.jsxs)(n.p,{children:["In some cases when deploying the script, you may experience ",(0,o.jsx)(n.strong,{children:'"No manual gas limit set"'})," or ",(0,o.jsx)(n.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,o.jsx)(n.a,{href:"/develop/nova/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n",(0,o.jsxs)(n.ol,{start:"11",children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Congratulations"}),", you've successfully deployed your smart contract on the Autonomys EVM domain!"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},22745:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-1-6fc80cd45ba2e4f90daf14813ef7baca.png"},95691:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-3-9bb9556ee93a5528ba838b8ed6058e6f.png"},49780:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-4-bfe919118bee2b9e54ecd14bfe330dca.png"},70909:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-5-09c4c004cebb80e36ea4b501f34d003f.png"},29670:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-6-886cbad16b9325ae4006646535606c05.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var o=t(96540);const r={},s=o.createContext(r);function a(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b23e3acb.274f2596.js b/assets/js/b23e3acb.274f2596.js new file mode 100644 index 00000000000..5f6acbe3119 --- /dev/null +++ b/assets/js/b23e3acb.274f2596.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3372],{60373:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var o=t(74848),r=t(28453);const s={title:"Hardhat",sidebar_position:2,description:"Testing and Deploying Smart Contracts using HardHat",slug:"/develop/auto-evm/guides/hardhat",keywords:["autonomys network","hardhat"]},a=void 0,i={id:"develop/nova/additional-guides/hardhat_guide",title:"Hardhat",description:"Testing and Deploying Smart Contracts using HardHat",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/hardhat_guide.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/auto-evm/guides/hardhat",permalink:"/develop/auto-evm/guides/hardhat",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/hardhat_guide.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Hardhat",sidebar_position:2,description:"Testing and Deploying Smart Contracts using HardHat",slug:"/develop/auto-evm/guides/hardhat",keywords:["autonomys network","hardhat"]},sidebar:"tutorialSidebar",previous:{title:"Foundry",permalink:"/develop/auto-evm/guides/foundry"},next:{title:"Local Development",permalink:"/develop/auto-evm/guides/local-development"}},c={},d=[{value:"Hardhat testing and deployment",id:"hardhat-testing-and-deployment",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h3,{id:"hardhat-testing-and-deployment",children:"Hardhat testing and deployment"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.p,{children:"Hardhat is an excellent tool that facilitates building on the Ethereum Virtual Machine. It helps developers manage and automate the recurring tasks that are inherent to the process of building smart contracts and dApps, and it allows them to easily introduce more functionality around this workflow. This includes compiling and testing at the very core. Flexible deployment options also allow you to point to the Autonomys EVM domain RPC to deploy your contracts and dApps."}),"\n",(0,o.jsxs)(n.p,{children:["Official documentation for Hardhat is available ",(0,o.jsx)(n.a,{href:"https://hardhat.org/docs",children:"on their website"}),", but this guide will cover everything required to get you started."]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Prerequisites"}),"\nMake sure you have ",(0,o.jsx)(n.a,{href:"https://nodejs.org/en",children:"NodeJS"})," version >=16.0 installed."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Open a new terminal and run these commands to create a new folder for the project."}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"mkdir subspace-hardhat\ncd subspace-hardhat\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsx)(n.li,{children:"Then initialize an npm project as shown below. You'll be prompted to answer some questions."}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"npm install --save-dev hardhat\nnpm install --save-dev @openzeppelin/contracts\nnpx hardhat\n"})}),"\n",(0,o.jsx)(n.p,{children:'Select "Create a JavaScript Project" from the list of the available options. Select project root folder and select to create a .gitignore file (optional).'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-1",src:t(22745).A+"",width:"492",height:"196"})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsxs)(n.li,{children:["Right after you create your workspace, you will notice several folders. All of your contracts will reside inside the ",(0,o.jsx)(n.code,{children:"contracts"})," folder, deployment scripts are available inside the ",(0,o.jsx)(n.code,{children:"scripts"})," folder, and tests can be found inside the ",(0,o.jsx)(n.code,{children:"test"})," folder. Click on the contracts folder and open ",(0,o.jsx)(n.code,{children:"Lock.sol"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-3",src:t(95691).A+"",width:"423",height:"246"})}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsxs)(n.li,{children:["When in ",(0,o.jsx)(n.code,{children:"Lock.sol"}),", you can change the name of your contract (in the example, to ",(0,o.jsx)(n.code,{children:"Counter"}),"), the name of the token (in this example, we're calling it ",(0,o.jsx)(n.code,{children:"AutonomysTestToken"}),") and the token symbol (we're using ",(0,o.jsx)(n.code,{children:"TSSCtest"}),")."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Let\u2019s add a simple smart contract that has three functions - ",(0,o.jsx)(n.code,{children:"setNumber()"}),", ",(0,o.jsx)(n.code,{children:"increment()"})," and ",(0,o.jsx)(n.code,{children:"decrement()"}),"."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\nimport \'@openzeppelin/contracts/token/ERC20/ERC20.sol\';\n\ncontract Counter is ERC20 {\n constructor() ERC20("AutonomysTestToken", "TSSCtest") {}\n\n uint256 public number;\n\n function setNumber(uint256 newNumber) public {\n number = newNumber;\n }\n\n function increment() public {\n number++;\n }\n\n function decrement() public {\n number--;\n }\n}\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Let's also rename the filename to ",(0,o.jsx)(n.code,{children:"Counter.sol"})," for consistency."]}),"\n",(0,o.jsxs)(n.ol,{start:"5",children:["\n",(0,o.jsx)(n.li,{children:"Deploying a smart contract can be an expensive procedure due to the gas costs associated with the transaction. Hence, it\u2019s advisable to thoroughly test the smart contracts for correctness before proceeding with deployment. To test the contract, open the tests folder and examine the Lock.js file created for us. Replace the internals of the file with the following code:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'const { expect } = require("chai");\n\ndescribe("Counter", function() {\nlet Counter;\nlet counter;\nlet owner;\nlet addr1;\n\nbeforeEach(async function() {\n Counter = await ethers.getContractFactory("Counter");\n [owner, addr1] = await ethers.getSigners();\n\n counter = await Counter.deploy();\n});\n\ndescribe("Counter operations", function() {\n it("Should return initial value of zero", async function() {\n expect(await counter.number()).to.equal(0);\n });\n\n it("Should set number to a new value", async function() {\n await counter.setNumber(5);\n expect(await counter.number()).to.equal(5);\n });\n\n it("Should increment the number", async function() {\n await counter.setNumber(5);\n await counter.increment();\n expect(await counter.number()).to.equal(6);\n });\n\n it("Should decrement the number", async function() {\n await counter.setNumber(5);\n await counter.decrement();\n expect(await counter.number()).to.equal(4);\n });\n});\n});\n'})}),"\n",(0,o.jsxs)(n.p,{children:["For consistency, let's also rename ",(0,o.jsx)(n.code,{children:"Lock.js"})," to ",(0,o.jsx)(n.code,{children:"CounterTest.js"})]}),"\n",(0,o.jsxs)(n.ol,{start:"7",children:["\n",(0,o.jsxs)(n.li,{children:["To run the test, simply type ",(0,o.jsx)(n.code,{children:"npx hardhat test"})]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-4",src:t(49780).A+"",width:"553",height:"214"})}),"\n",(0,o.jsx)(n.p,{children:"Great, looks like everything is working as expected. We\u2019re all set for the deployment!"}),"\n",(0,o.jsxs)(n.ol,{start:"8",children:["\n",(0,o.jsxs)(n.li,{children:["In order to deploy the contract, we need to set a deployment network for hardhat.\nOpen ",(0,o.jsx)(n.code,{children:"hardhat.config.js"})," file and add the subspace to the list of networks."]}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'require("@nomicfoundation/hardhat-toolbox");\nmodule.exports = {\nsolidity: "0.8.19",\nnetworks: {\n subspace: {\n url: "https://nova-0.gemini-3h.subspace.network/ws",\n accounts: ["private_key_to_your_account"]\n }\n}\n};\n'})}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["Be careful to not commit hardhat.config.js file as it contain your private key. You can use NPM tools like ",(0,o.jsx)(n.a,{href:"https://www.npmjs.com/package/dotenv",children:"dotenv"})," to securely store your private keys in the ",(0,o.jsx)(n.code,{children:".env"})," file."]})}),"\n",(0,o.jsxs)(n.ol,{start:"9",children:["\n",(0,o.jsxs)(n.li,{children:["Open ",(0,o.jsx)(n.code,{children:"deploy.js"})," file and replace the content with the code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-5",src:t(70909).A+"",width:"619",height:"258"})}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'const hre = require("hardhat");\n\nasync function main() {\nconst Contract = await hre.ethers.getContractFactory("Counter");\nconst contract = await Contract.deploy();\n\nconsole.log("Contract deployed to:", contract.target);\n}\n\nmain().catch((error) => {\nconsole.error(error);\nprocess.exitCode = 1;\n});\n'})}),"\n",(0,o.jsxs)(n.ol,{start:"10",children:["\n",(0,o.jsxs)(n.li,{children:["You're all set to deploy your smart contract on Autonomys Network!\nIn order to deploy, run ",(0,o.jsx)(n.code,{children:"npx hardhat run scripts/deploy.js --network subspace"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["This command will deploy your smart contract on the network we've just specified in ",(0,o.jsx)(n.code,{children:"hardhat.config.js"})," file."]}),"\n",(0,o.jsxs)(n.p,{children:["In case of success deployment, you should see ",(0,o.jsx)(n.code,{children:"Contract deployed to: transaction hash"}),"."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Hardhat-6",src:t(29670).A+"",width:"633",height:"89"})}),"\n",(0,o.jsx)(n.admonition,{type:"caution",children:(0,o.jsxs)(n.p,{children:["In some cases when deploying the script, you may experience ",(0,o.jsx)(n.strong,{children:'"No manual gas limit set"'})," or ",(0,o.jsx)(n.strong,{children:'"Gas estimation failed"'})," issues. Please refer to ",(0,o.jsx)(n.a,{href:"/develop/auto-evm/introduction#gas-estimation-issue",children:"this section"})," for the solution."]})}),"\n",(0,o.jsxs)(n.ol,{start:"11",children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Congratulations"}),", you've successfully deployed your smart contract on the Autonomys EVM domain!"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},22745:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-1-6fc80cd45ba2e4f90daf14813ef7baca.png"},95691:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-3-9bb9556ee93a5528ba838b8ed6058e6f.png"},49780:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-4-bfe919118bee2b9e54ecd14bfe330dca.png"},70909:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-5-09c4c004cebb80e36ea4b501f34d003f.png"},29670:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Hardhat-6-886cbad16b9325ae4006646535606c05.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var o=t(96540);const r={},s=o.createContext(r);function a(e){const n=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b80a0e98.3a34c5f5.js b/assets/js/b80a0e98.3a34c5f5.js new file mode 100644 index 00000000000..99243492ae4 --- /dev/null +++ b/assets/js/b80a0e98.3a34c5f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[838],{46042:e=>{e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"\u264a Auto EVM","description":"Developers\' guide on utilizing Autonomys Network","slug":"develop/auto-evm","permalink":"/develop/auto-evm","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Drive","permalink":"/develop/auto-sdk/drive"},"next":{"title":"Introduction","permalink":"/develop/auto-evm/introduction"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/c0701f9f.3b579e3b.js b/assets/js/c0701f9f.e3e4bb02.js similarity index 87% rename from assets/js/c0701f9f.3b579e3b.js rename to assets/js/c0701f9f.e3e4bb02.js index 511be56e562..6f2f7549dea 100644 --- a/assets/js/c0701f9f.3b579e3b.js +++ b/assets/js/c0701f9f.e3e4bb02.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8215],{5982:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=n(74848),r=n(28453);const i={title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Getting Started","Learn","Farming","Development"]},a="\ud83d\udc4bWelcome",s={id:"learn/intro",title:"Getting Started",description:"A Getting Started guide for the Autonomys Network",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/intro.md",sourceDirName:"learn",slug:"/learn/intro",permalink:"/learn/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/learn/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Getting Started","Learn","Farming","Development"]},sidebar:"tutorialSidebar",next:{title:"Safety and Security",permalink:"/learn/security"}},l={},d=[{value:"\u2753 Learn About the Autonomys Network",id:"-learn-about-the-autonomys-network",level:2},{value:"\ud83e\udd1d Participate on the Autonomys Network",id:"-participate-on-the-autonomys-network",level:2},{value:"Become a farmer",id:"become-a-farmer",level:3},{value:"- Start Farming with Space Acres",id:"--start-farming-with-space-acres",level:4},{value:"- Start Farming with Advanced CLI",id:"--start-farming-with-advanced-cli",level:4},{value:"Become a nominator",id:"become-a-nominator",level:3},{value:"- Start Staking",id:"--start-staking",level:4},{value:"Become an operator",id:"become-an-operator",level:3},{value:"- Start an Operator node",id:"--start-an-operator-node",level:4},{value:"Become a timekeeper",id:"become-a-timekeeper",level:3},{value:"- Start timekeeping",id:"--start-timekeeping",level:4},{value:"\ud83d\udcd6 Develop on The Autonomys Network",id:"-develop-on-the-autonomys-network",level:2},{value:"Utilize the Auto SDK",id:"utilize-the-auto-sdk",level:3},{value:"- Auto SDK",id:"--auto-sdk",level:4},{value:"Utilize the EVM Domain",id:"utilize-the-evm-domain",level:3},{value:"- EVM Development",id:"--evm-development",level:4},{value:"Utilize the Core Protocol",id:"utilize-the-core-protocol",level:3},{value:"- Core Protocol Development",id:"--core-protocol-development",level:4}];function h(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"welcome",children:"\ud83d\udc4bWelcome"})}),"\n",(0,o.jsx)(t.p,{children:"The Autonomys Network is an ambitious layer zero protocol which is the first scalable, secure, & decentralized infrastructure layer for the Web3 ecosystems."}),"\n",(0,o.jsx)(t.h2,{id:"-learn-about-the-autonomys-network",children:"\u2753 Learn About the Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.autonomys.xyz/project",children:"What is Autonomys Network"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://academy.autonomys.xyz/subspace-protocol/rewards-and-fees",children:"Rewards & Fees on the Autonomys Network"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz",children:"Autonomys Forum - Knowledge-Sharing Platform"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://cdn.prod.website-files.com/66d7181179fbc331d39e9df0/6734a4bf4a74c3c5c6b01d34_autonomys_whitepaper.pdf",children:"Whitepaper"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://autonomys-public-assets.s3.us-east-1.amazonaws.com/autonomys-lightpaper.pdf",children:"Litepaper"})}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"-participate-on-the-autonomys-network",children:"\ud83e\udd1d Participate on the Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"become-a-farmer",children:(0,o.jsx)(t.strong,{children:"Become a farmer"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Farmers"})," on the Autonomys Network are responsible for maintaining consensus, they do this by securing the ",(0,o.jsx)(t.strong,{children:"consensus chain"}),". A ",(0,o.jsx)(t.strong,{children:"farmer"})," plots pieces of ",(0,o.jsx)(t.strong,{children:"archival history"})," to disk, farms the created plot for block and vote rewards, and joins the DSN as a node for data retrieval."]}),"\n",(0,o.jsxs)(t.p,{children:["Choose one of the following methods to ",(0,o.jsx)(t.strong,{children:"start farming"})," on the Network (from easy to more complex):"]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-farming-with-space-acres",children:["- ",(0,o.jsx)(t.a,{href:"/farming/space-acres/install",children:"Start Farming with Space Acres"})]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-farming-with-advanced-cli",children:["- ",(0,o.jsx)(t.a,{href:"/farming/advanced-cli/install",children:"Start Farming with Advanced CLI"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-a-nominator",children:(0,o.jsx)(t.strong,{children:"Become a nominator"})}),"\n",(0,o.jsxs)(t.p,{children:["Farmers can nominate ",(0,o.jsx)(t.strong,{children:"operators"})," and back them with their tokens, increasing their stake and chance of being elected as slot leaders. Generally speaking, any SSC token holder can stake their tokens by ",(0,o.jsx)(t.strong,{children:"nominating"})," a domain operator without having to become an operator or farmer themselves. ",(0,o.jsx)(t.strong,{children:"Nominators"})," earn ",(0,o.jsx)(t.strong,{children:"staking"})," rewards, proportional to their ",(0,o.jsx)(t.strong,{children:"staking amount"})," and pay the operator a pre-agreed ",(0,o.jsx)(t.strong,{children:"tax"})," on them."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-staking",children:["- ",(0,o.jsx)(t.a,{href:"/staking/stake",children:"Start Staking"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-an-operator",children:(0,o.jsx)(t.strong,{children:"Become an operator"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Operators"})," are responsible for validating and executing transactions, producing execution receipts, applying state transitions and earn rewards for their work."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-an-operator-node",children:["- ",(0,o.jsx)(t.a,{href:"/staking/operator/register",children:"Start an Operator node"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-a-timekeeper",children:(0,o.jsx)(t.strong,{children:"Become a timekeeper"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Timekeepers"})," on the Autonomys Network are responsible for running the ",(0,o.jsx)(t.strong,{children:"Proof-of-Time chain"})," and maintaining the randomness beacon for the ",(0,o.jsx)(t.strong,{children:"consensus chain"}),"."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-timekeeping",children:["- ",(0,o.jsx)(t.a,{href:"/farming/timekeeper",children:"Start timekeeping"})]}),"\n",(0,o.jsx)(t.h2,{id:"-develop-on-the-autonomys-network",children:"\ud83d\udcd6 Develop on The Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-auto-sdk",children:"Utilize the Auto SDK"}),"\n",(0,o.jsx)(t.p,{children:"Interact with storage, consensus and domains via the Auto SDK to build powerful applications with ease."}),"\n",(0,o.jsxs)(t.h4,{id:"--auto-sdk",children:["- ",(0,o.jsx)(t.a,{href:"/develop/auto-sdk/intro",children:"Auto SDK"})]}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-evm-domain",children:"Utilize the EVM Domain"}),"\n",(0,o.jsxs)(t.p,{children:["The Autonomys Network hosts an ",(0,o.jsx)(t.strong,{children:"EVM (Ethereum Virtual Machine)"}),", that allows you to deploy your ",(0,o.jsx)(t.strong,{children:"smart contracts."})]}),"\n",(0,o.jsxs)(t.h4,{id:"--evm-development",children:["- ",(0,o.jsx)(t.a,{href:"/develop/nova/introduction",children:"EVM Development"})]}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-core-protocol",children:"Utilize the Core Protocol"}),"\n",(0,o.jsx)(t.p,{children:"The Autonomys Network aims to provide an amazing developer experience to anyone who wishes to build on top of the protocol. As such we have started working on a variety of tools to assist and promote development on our network."}),"\n",(0,o.jsxs)(t.h4,{id:"--core-protocol-development",children:["- ",(0,o.jsx)(t.a,{href:"https://github.com/autonomys/subspace/blob/main/docs/development.md",children:"Core Protocol Development"})]})]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>s});var o=n(96540);const r={},i=o.createContext(r);function a(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8215],{5982:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=n(74848),r=n(28453);const i={title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Getting Started","Learn","Farming","Development"]},a="\ud83d\udc4bWelcome",s={id:"learn/intro",title:"Getting Started",description:"A Getting Started guide for the Autonomys Network",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/intro.md",sourceDirName:"learn",slug:"/learn/intro",permalink:"/learn/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/learn/intro.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Getting Started",sidebar_position:1,description:"A Getting Started guide for the Autonomys Network",keywords:["Getting Started","Learn","Farming","Development"]},sidebar:"tutorialSidebar",next:{title:"Safety and Security",permalink:"/learn/security"}},l={},d=[{value:"\u2753 Learn About the Autonomys Network",id:"-learn-about-the-autonomys-network",level:2},{value:"\ud83e\udd1d Participate on the Autonomys Network",id:"-participate-on-the-autonomys-network",level:2},{value:"Become a farmer",id:"become-a-farmer",level:3},{value:"- Start Farming with Space Acres",id:"--start-farming-with-space-acres",level:4},{value:"- Start Farming with Advanced CLI",id:"--start-farming-with-advanced-cli",level:4},{value:"Become a nominator",id:"become-a-nominator",level:3},{value:"- Start Staking",id:"--start-staking",level:4},{value:"Become an operator",id:"become-an-operator",level:3},{value:"- Start an Operator node",id:"--start-an-operator-node",level:4},{value:"Become a timekeeper",id:"become-a-timekeeper",level:3},{value:"- Start timekeeping",id:"--start-timekeeping",level:4},{value:"\ud83d\udcd6 Develop on The Autonomys Network",id:"-develop-on-the-autonomys-network",level:2},{value:"Utilize the Auto SDK",id:"utilize-the-auto-sdk",level:3},{value:"- Auto SDK",id:"--auto-sdk",level:4},{value:"Utilize the EVM Domain",id:"utilize-the-evm-domain",level:3},{value:"- EVM Development",id:"--evm-development",level:4},{value:"Utilize the Core Protocol",id:"utilize-the-core-protocol",level:3},{value:"- Core Protocol Development",id:"--core-protocol-development",level:4}];function h(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"welcome",children:"\ud83d\udc4bWelcome"})}),"\n",(0,o.jsx)(t.p,{children:"The Autonomys Network is an ambitious layer zero protocol which is the first scalable, secure, & decentralized infrastructure layer for the Web3 ecosystems."}),"\n",(0,o.jsx)(t.h2,{id:"-learn-about-the-autonomys-network",children:"\u2753 Learn About the Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://www.autonomys.xyz/project",children:"What is Autonomys Network"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://academy.autonomys.xyz/subspace-protocol/rewards-and-fees",children:"Rewards & Fees on the Autonomys Network"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz",children:"Autonomys Forum - Knowledge-Sharing Platform"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://cdn.prod.website-files.com/66d7181179fbc331d39e9df0/6734a4bf4a74c3c5c6b01d34_autonomys_whitepaper.pdf",children:"Whitepaper"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://autonomys-public-assets.s3.us-east-1.amazonaws.com/autonomys-lightpaper.pdf",children:"Litepaper"})}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"-participate-on-the-autonomys-network",children:"\ud83e\udd1d Participate on the Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"become-a-farmer",children:(0,o.jsx)(t.strong,{children:"Become a farmer"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Farmers"})," on the Autonomys Network are responsible for maintaining consensus, they do this by securing the ",(0,o.jsx)(t.strong,{children:"consensus chain"}),". A ",(0,o.jsx)(t.strong,{children:"farmer"})," plots pieces of ",(0,o.jsx)(t.strong,{children:"archival history"})," to disk, farms the created plot for block and vote rewards, and joins the DSN as a node for data retrieval."]}),"\n",(0,o.jsxs)(t.p,{children:["Choose one of the following methods to ",(0,o.jsx)(t.strong,{children:"start farming"})," on the Network (from easy to more complex):"]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-farming-with-space-acres",children:["- ",(0,o.jsx)(t.a,{href:"/farming/space-acres/install",children:"Start Farming with Space Acres"})]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-farming-with-advanced-cli",children:["- ",(0,o.jsx)(t.a,{href:"/farming/advanced-cli/install",children:"Start Farming with Advanced CLI"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-a-nominator",children:(0,o.jsx)(t.strong,{children:"Become a nominator"})}),"\n",(0,o.jsxs)(t.p,{children:["Farmers can nominate ",(0,o.jsx)(t.strong,{children:"operators"})," and back them with their tokens, increasing their stake and chance of being elected as slot leaders. Generally speaking, any SSC token holder can stake their tokens by ",(0,o.jsx)(t.strong,{children:"nominating"})," a domain operator without having to become an operator or farmer themselves. ",(0,o.jsx)(t.strong,{children:"Nominators"})," earn ",(0,o.jsx)(t.strong,{children:"staking"})," rewards, proportional to their ",(0,o.jsx)(t.strong,{children:"staking amount"})," and pay the operator a pre-agreed ",(0,o.jsx)(t.strong,{children:"tax"})," on them."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-staking",children:["- ",(0,o.jsx)(t.a,{href:"/staking/stake",children:"Start Staking"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-an-operator",children:(0,o.jsx)(t.strong,{children:"Become an operator"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Operators"})," are responsible for validating and executing transactions, producing execution receipts, applying state transitions and earn rewards for their work."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-an-operator-node",children:["- ",(0,o.jsx)(t.a,{href:"/staking/operator/register",children:"Start an Operator node"})]}),"\n",(0,o.jsx)(t.h3,{id:"become-a-timekeeper",children:(0,o.jsx)(t.strong,{children:"Become a timekeeper"})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Timekeepers"})," on the Autonomys Network are responsible for running the ",(0,o.jsx)(t.strong,{children:"Proof-of-Time chain"})," and maintaining the randomness beacon for the ",(0,o.jsx)(t.strong,{children:"consensus chain"}),"."]}),"\n",(0,o.jsxs)(t.h4,{id:"--start-timekeeping",children:["- ",(0,o.jsx)(t.a,{href:"/farming/timekeeper",children:"Start timekeeping"})]}),"\n",(0,o.jsx)(t.h2,{id:"-develop-on-the-autonomys-network",children:"\ud83d\udcd6 Develop on The Autonomys Network"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-auto-sdk",children:"Utilize the Auto SDK"}),"\n",(0,o.jsx)(t.p,{children:"Interact with storage, consensus and domains via the Auto SDK to build powerful applications with ease."}),"\n",(0,o.jsxs)(t.h4,{id:"--auto-sdk",children:["- ",(0,o.jsx)(t.a,{href:"/develop/auto-sdk/intro",children:"Auto SDK"})]}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-evm-domain",children:"Utilize the EVM Domain"}),"\n",(0,o.jsxs)(t.p,{children:["The Autonomys Network hosts an ",(0,o.jsx)(t.strong,{children:"EVM (Ethereum Virtual Machine)"}),", that allows you to deploy your ",(0,o.jsx)(t.strong,{children:"smart contracts."})]}),"\n",(0,o.jsxs)(t.h4,{id:"--evm-development",children:["- ",(0,o.jsx)(t.a,{href:"/develop/auto-evm/introduction",children:"EVM Development"})]}),"\n",(0,o.jsx)(t.h3,{id:"utilize-the-core-protocol",children:"Utilize the Core Protocol"}),"\n",(0,o.jsx)(t.p,{children:"The Autonomys Network aims to provide an amazing developer experience to anyone who wishes to build on top of the protocol. As such we have started working on a variety of tools to assist and promote development on our network."}),"\n",(0,o.jsxs)(t.h4,{id:"--core-protocol-development",children:["- ",(0,o.jsx)(t.a,{href:"https://github.com/autonomys/subspace/blob/main/docs/development.md",children:"Core Protocol Development"})]})]})}function c(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>s});var o=n(96540);const r={},i=o.createContext(r);function a(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/db294877.e57590a0.js b/assets/js/db294877.e57590a0.js new file mode 100644 index 00000000000..218765d67e3 --- /dev/null +++ b/assets/js/db294877.e57590a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1608],{59241:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var i=o(74848),n=o(28453);const a={title:"General Information",sidebar_position:2,description:"Guide on setting up",slug:"/develop/auto-evm/general",keywords:["metamask","autonomys network"]},r=void 0,s={id:"develop/nova/general-information",title:"General Information",description:"Guide on setting up",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/general-information.md",sourceDirName:"develop/nova",slug:"/develop/auto-evm/general",permalink:"/develop/auto-evm/general",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/general-information.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"General Information",sidebar_position:2,description:"Guide on setting up",slug:"/develop/auto-evm/general",keywords:["metamask","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/develop/auto-evm/introduction"},next:{title:"Setting up MetaMask",permalink:"/develop/auto-evm/metamask"}},l={},c=[{value:"What tools are available for developers?",id:"what-tools-are-available-for-developers",level:3},{value:"Smart Contract",id:"smart-contract",level:3},{value:"Differences with Ethereum",id:"differences-with-ethereum",level:3},{value:"What is Solidity?",id:"what-is-solidity",level:3}];function d(e){const t={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"what-tools-are-available-for-developers",children:"What tools are available for developers?"}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.p,{children:["Developing smart contracts involves a suite of tools that aid in writing, testing and deploying code on the blockchain. ",(0,i.jsx)(t.strong,{children:"Autonomys utilizes an instance of the Ethereum Virtual Machine. Therefore, every tool used to build, test, and deploy smart contracts on Ethereum is also available for Autonomys!"})]}),"\n",(0,i.jsx)(t.p,{children:"First, Solidity is the primary programming language for writing smart contracts. It is statically typed, supports inheritance, libraries, and complex user-defined types, making it familiar for developers with a background in other statically typed languages such as C++, Java, or JavaScript."}),"\n",(0,i.jsxs)(t.p,{children:["Integrated Development Environments (IDEs) such as the ",(0,i.jsx)(t.a,{href:"https://remix.ethereum.org/",children:"Remix IDE"})," are often used to aid in writing smart contracts. Remix IDE is a browser-based IDE that enables you to write, deploy, and interact with Solidity smart contracts. It features a built-in static analysis tool that checks your code for common errors."]}),"\n",(0,i.jsxs)(t.p,{children:["For local development and testing, you have multiple options. You can spin up your own version of an Autonomys Developer Node and farmer to deploy contracts, develop applications, and run tests. Alternatively, you can use Ethereum development tools like ",(0,i.jsx)(t.a,{href:"https://hardhat.org/hardhat-network/docs/overview",children:"Hardhat"})," or ",(0,i.jsx)(t.a,{href:"https://book.getfoundry.sh/anvil/",children:"Anvil"}),", which are fully compatible with Autonomys due to their EVM compatibility."]}),"\n",(0,i.jsxs)(t.p,{children:["For deploying and interacting with smart contracts, a JavaScript provider like the one injected by the ",(0,i.jsx)(t.a,{href:"https://metamask.io/",children:"MetaMask"})," browser extension is used. This provider enables JavaScript applications to communicate with the Autonomys network or any Ethereum-compatible network. It's compatible with both ",(0,i.jsx)(t.a,{href:"https://docs.ethers.org/v5/",children:"ethers.js"}),", ",(0,i.jsx)(t.a,{href:"https://web3js.readthedocs.io/en/v1.10.0/",children:"web3.js"})," and ",(0,i.jsx)(t.a,{href:"https://web3py.readthedocs.io/en/stable/",children:"Web3.py"}),", allowing developers to use either library for their blockchain operations."]}),"\n",(0,i.jsx)(t.p,{children:"All these tools together provide an ecosystem for EVM-compatible smart contract development, making the process more manageable and efficient."}),"\n",(0,i.jsx)(t.h3,{id:"smart-contract",children:"Smart Contract"}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.p,{children:"A smart contract is a digital agreement coded into a blockchain network, designed to automatically execute or enforce the terms of a contract. These self-executing contracts, primarily developed on decentralized computer systems, eliminate the need for an intermediary by conducting transactions directly between parties. Smart contracts are transparent, traceable, and irreversible, providing immediate certainty about outcomes once preset conditions are met. They streamline various applications, from finance to supply chain management, by automating workflows and facilitating trustless interactions."}),"\n",(0,i.jsx)(t.h3,{id:"differences-with-ethereum",children:"Differences with Ethereum"}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.p,{children:["Autonomys Token (AI3) (TSSC for Subspace Credit during the testnet) is the sole method of payment for gas within the Autonomys EVM runtime.\nThere will be a bridge to convert farmed tokens into EVM-compatible tokens to cover the gas fees, however, at the moment the only viable option to get some tAI3 on your wallet is through the Autonomys ",(0,i.jsx)(t.a,{href:"/develop/auto-evm/faucet",children:"faucet"}),"."]}),"\n",(0,i.jsx)(t.h3,{id:"what-is-solidity",children:"What is Solidity?"}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.p,{children:"Solidity is a statically typed, contract-oriented, high-level language primarily used for implementing smart contracts on blockchain platforms like Ethereum. Its syntax is similar to that of JavaScript and C++, which makes it relatively easy for developers from those language backgrounds to pick it up. Its features such as contract classes, inheritance, complex user-defined types, and libraries bring object-oriented programming capabilities to blockchain development."}),"\n",(0,i.jsx)(t.p,{children:'One of the key features of Solidity is its first-class support for "contracts." These are akin to classes in object-oriented languages but are deployed on the Ethereum blockchain, allowing them to maintain a persistent state over time and interact with other contracts, the same way as objects interact in traditional programming.'}),"\n",(0,i.jsx)(t.p,{children:"Moreover, Solidity comes with safety features, such as a robust type system and control structures, which help prevent bugs. It also provides a variety of built-in functions for performing operations like cryptographic hashing, signature verification, and address checking, making it easier to write secure code."}),"\n",(0,i.jsx)(t.p,{children:"The popularity of Solidity is primarily due to its design for Ethereum, the leading smart contract platform. As Ethereum gained traction for decentralized applications (dApps), Solidity became the go-to language for writing smart contracts for these applications. Furthermore, its resemblance to widely-used languages like JavaScript and C++ helped its adoption amongst developers."}),"\n",(0,i.jsx)(t.p,{children:"Lastly, Solidity is continually evolving with frequent updates, new features, and improvements that address the unique needs of blockchain development. This responsive development and the thriving community around it further solidify its position as the leading language for smart contract development."}),"\n",(0,i.jsxs)(t.p,{children:["Solidity has a great community of developers and extensive documentation is available on the official ",(0,i.jsx)(t.a,{href:"https://soliditylang.org/",children:"website"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,t,o)=>{o.d(t,{R:()=>r,x:()=>s});var i=o(96540);const n={},a=i.createContext(n);function r(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/db294877.ea55ba20.js b/assets/js/db294877.ea55ba20.js deleted file mode 100644 index 45980f906ed..00000000000 --- a/assets/js/db294877.ea55ba20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1608],{59241:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=o(74848),i=o(28453);const a={title:"General Information",sidebar_position:2,description:"Guide on setting up",slug:"/develop/nova/general",keywords:["metamask","autonomys network"]},r=void 0,s={id:"develop/nova/general-information",title:"General Information",description:"Guide on setting up",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/general-information.md",sourceDirName:"develop/nova",slug:"/develop/nova/general",permalink:"/develop/nova/general",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/general-information.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"General Information",sidebar_position:2,description:"Guide on setting up",slug:"/develop/nova/general",keywords:["metamask","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/develop/nova/introduction"},next:{title:"Setting up MetaMask",permalink:"/develop/nova/metamask"}},l={},c=[{value:"What tools are available for developers?",id:"what-tools-are-available-for-developers",level:3},{value:"Smart Contract",id:"smart-contract",level:3},{value:"Differences with Ethereum",id:"differences-with-ethereum",level:3},{value:"What is Solidity?",id:"what-is-solidity",level:3}];function d(e){const t={a:"a",h3:"h3",hr:"hr",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"what-tools-are-available-for-developers",children:"What tools are available for developers?"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["Developing smart contracts involves a suite of tools that aid in writing, testing and deploying code on the blockchain. ",(0,n.jsx)(t.strong,{children:"Autonomys utilizes an instance of the Ethereum Virtual Machine. Therefore, every tool used to build, test, and deploy smart contracts on Ethereum is also available for Autonomys!"})]}),"\n",(0,n.jsx)(t.p,{children:"First, Solidity is the primary programming language for writing smart contracts. It is statically typed, supports inheritance, libraries, and complex user-defined types, making it familiar for developers with a background in other statically typed languages such as C++, Java, or JavaScript."}),"\n",(0,n.jsxs)(t.p,{children:["Integrated Development Environments (IDEs) such as the ",(0,n.jsx)(t.a,{href:"https://remix.ethereum.org/",children:"Remix IDE"})," are often used to aid in writing smart contracts. Remix IDE is a browser-based IDE that enables you to write, deploy, and interact with Solidity smart contracts. It features a built-in static analysis tool that checks your code for common errors."]}),"\n",(0,n.jsxs)(t.p,{children:["For local development and testing, you have multiple options. You can spin up your own version of an Autonomys Developer Node and farmer to deploy contracts, develop applications, and run tests. Alternatively, you can use Ethereum development tools like ",(0,n.jsx)(t.a,{href:"https://hardhat.org/hardhat-network/docs/overview",children:"Hardhat"})," or ",(0,n.jsx)(t.a,{href:"https://book.getfoundry.sh/anvil/",children:"Anvil"}),", which are fully compatible with Autonomys due to their EVM compatibility."]}),"\n",(0,n.jsxs)(t.p,{children:["For deploying and interacting with smart contracts, a JavaScript provider like the one injected by the ",(0,n.jsx)(t.a,{href:"https://metamask.io/",children:"MetaMask"})," browser extension is used. This provider enables JavaScript applications to communicate with the Autonomys network or any Ethereum-compatible network. It's compatible with both ",(0,n.jsx)(t.a,{href:"https://docs.ethers.org/v5/",children:"ethers.js"}),", ",(0,n.jsx)(t.a,{href:"https://web3js.readthedocs.io/en/v1.10.0/",children:"web3.js"})," and ",(0,n.jsx)(t.a,{href:"https://web3py.readthedocs.io/en/stable/",children:"Web3.py"}),", allowing developers to use either library for their blockchain operations."]}),"\n",(0,n.jsx)(t.p,{children:"All these tools together provide an ecosystem for EVM-compatible smart contract development, making the process more manageable and efficient."}),"\n",(0,n.jsx)(t.h3,{id:"smart-contract",children:"Smart Contract"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.p,{children:"A smart contract is a digital agreement coded into a blockchain network, designed to automatically execute or enforce the terms of a contract. These self-executing contracts, primarily developed on decentralized computer systems, eliminate the need for an intermediary by conducting transactions directly between parties. Smart contracts are transparent, traceable, and irreversible, providing immediate certainty about outcomes once preset conditions are met. They streamline various applications, from finance to supply chain management, by automating workflows and facilitating trustless interactions."}),"\n",(0,n.jsx)(t.h3,{id:"differences-with-ethereum",children:"Differences with Ethereum"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["Autonomys Token (ATC) (TSSC for Subspace Credit during the testnet) is the sole method of payment for gas within the Autonomys EVM runtime.\nThere will be a bridge to convert farmed tokens into EVM-compatible tokens to cover the gas fees, however, at the moment the only viable option to get some TSSC on your wallet is through the Autonomys ",(0,n.jsx)(t.a,{href:"/develop/nova/faucet",children:"faucet"}),"."]}),"\n",(0,n.jsx)(t.h3,{id:"what-is-solidity",children:"What is Solidity?"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.p,{children:"Solidity is a statically typed, contract-oriented, high-level language primarily used for implementing smart contracts on blockchain platforms like Ethereum. Its syntax is similar to that of JavaScript and C++, which makes it relatively easy for developers from those language backgrounds to pick it up. Its features such as contract classes, inheritance, complex user-defined types, and libraries bring object-oriented programming capabilities to blockchain development."}),"\n",(0,n.jsx)(t.p,{children:'One of the key features of Solidity is its first-class support for "contracts." These are akin to classes in object-oriented languages but are deployed on the Ethereum blockchain, allowing them to maintain a persistent state over time and interact with other contracts, the same way as objects interact in traditional programming.'}),"\n",(0,n.jsx)(t.p,{children:"Moreover, Solidity comes with safety features, such as a robust type system and control structures, which help prevent bugs. It also provides a variety of built-in functions for performing operations like cryptographic hashing, signature verification, and address checking, making it easier to write secure code."}),"\n",(0,n.jsx)(t.p,{children:"The popularity of Solidity is primarily due to its design for Ethereum, the leading smart contract platform. As Ethereum gained traction for decentralized applications (dApps), Solidity became the go-to language for writing smart contracts for these applications. Furthermore, its resemblance to widely-used languages like JavaScript and C++ helped its adoption amongst developers."}),"\n",(0,n.jsx)(t.p,{children:"Lastly, Solidity is continually evolving with frequent updates, new features, and improvements that address the unique needs of blockchain development. This responsive development and the thriving community around it further solidify its position as the leading language for smart contract development."}),"\n",(0,n.jsxs)(t.p,{children:["Solidity has a great community of developers and extensive documentation is available on the official ",(0,n.jsx)(t.a,{href:"https://soliditylang.org/",children:"website"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},28453:(e,t,o)=>{o.d(t,{R:()=>r,x:()=>s});var n=o(96540);const i={},a=n.createContext(i);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ea18547f.17bcf534.js b/assets/js/ea18547f.17bcf534.js deleted file mode 100644 index 8635132d0e2..00000000000 --- a/assets/js/ea18547f.17bcf534.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3586],{91530:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var n=s(74848),a=s(28453);const o={title:"Setting up MetaMask",sidebar_position:3,description:"Guide on setting up MetaMask for development purposes",slug:"/develop/nova/metamask",keywords:["metamask","autonomys network"]},r=void 0,i={id:"develop/nova/setting-up-metamask",title:"Setting up MetaMask",description:"Guide on setting up MetaMask for development purposes",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/setting-up-metamask.md",sourceDirName:"develop/nova",slug:"/develop/nova/metamask",permalink:"/develop/nova/metamask",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/setting-up-metamask.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Setting up MetaMask",sidebar_position:3,description:"Guide on setting up MetaMask for development purposes",slug:"/develop/nova/metamask",keywords:["metamask","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"General Information",permalink:"/develop/nova/general"},next:{title:"Foundry",permalink:"/develop/nova/guides/foundry"}},d={},l=[{value:"Adding Autonomys RPC using MetaMask",id:"adding-autonomys-rpc-using-metamask",level:3}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"adding-autonomys-rpc-using-metamask",children:"Adding Autonomys RPC using MetaMask"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["You can use any EVM-compatible wallet, this guide will be using ",(0,n.jsx)(t.a,{href:"https://metamask.io/",children:(0,n.jsx)(t.strong,{children:"MetaMask"})})," wallet."]}),"\n",(0,n.jsx)(t.p,{children:"First, let\u2019s set up a MetaMask wallet and then go over connecting it to the Autonomys Development Network."}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Go to the ",(0,n.jsx)(t.a,{href:"https://metamask.io/",children:"MetaMask Website"})," and download an extension for your browser.\nSelect your preferred language in the top-right corner.\nRead and agree to MetaMask's terms of use."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-1",src:s(48544).A+"",width:"350",height:"392"})}),"\n",(0,n.jsxs)(t.ol,{start:"2",children:["\n",(0,n.jsx)(t.li,{children:"Click on \u201cCreate a new wallet\u201d.\nRead a note on gathering usage data and either agree to collect your anonymized data, or skip this step. It does not affect the creation of a wallet."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-2",src:s(26875).A+"",width:"350",height:"468"})}),"\n",(0,n.jsxs)(t.ol,{start:"3",children:["\n",(0,n.jsx)(t.li,{children:"On the next screen you will be asked to create a password. Remember to always set a secure password that\u2019s difficult to guess. Type your password twice before proceeding to the next step."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-3",src:s(12658).A+"",width:"350",height:"346"})}),"\n",(0,n.jsxs)(t.ol,{start:"4",children:["\n",(0,n.jsxs)(t.li,{children:["MetaMask automatically assesses the strength of your password.","\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:"As a rule of thumb, you should set a strong password, meaning that it includes uppercase letters, lowercase letters, numbers and special characters."})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-4",src:s(85165).A+"",width:"350",height:"343"})}),"\n",(0,n.jsxs)(t.ol,{start:"5",children:["\n",(0,n.jsx)(t.li,{children:"Watch a video to learn more about your Secret Recovery Phrase before proceeding to the next step."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-5",src:s(45220).A+"",width:"350",height:"507"})}),"\n",(0,n.jsxs)(t.ol,{start:"6",children:["\n",(0,n.jsxs)(t.li,{children:["Have a look and write down your 12-word recovery phrase.","\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsx)(t.p,{children:"The wallet with the recovery phrase for this guide will be deleted right after the guide is complete."})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-6",src:s(99871).A+"",width:"350",height:"464"})}),"\n",(0,n.jsxs)(t.ol,{start:"7",children:["\n",(0,n.jsx)(t.li,{children:"Confirm that you\u2019ve written down the recovery phrase by filling in the missing words of your recovery phrase."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-7",src:s(3542).A+"",width:"350",height:"332"})}),"\n",(0,n.jsxs)(t.ol,{start:"8",children:["\n",(0,n.jsx)(t.li,{children:"Now that your wallet is created, let\u2019s connect to the Autonomys Core EVM. Click on the Ethereum Mainnet logo and select Add Network."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-8",src:s(31825).A+"",width:"350",height:"357"})}),"\n",(0,n.jsxs)(t.ol,{start:"9",children:["\n",(0,n.jsx)(t.li,{children:"At the settings, click on \u201cAdd a network manually\u201d"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-9",src:s(17608).A+"",width:"1020",height:"650"})}),"\n",(0,n.jsxs)(t.ol,{start:"10",children:["\n",(0,n.jsx)(t.li,{children:"To connect to Autonomys RPC specify the values below"}),"\n"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"Network Name: Autonomys EVM\nNew RPC URL: https://nova-0.gemini-3h.subspace.network/ws\nChain ID: 490000\nCurrency Symbol: TSSC\n"})}),"\n",(0,n.jsxs)(t.p,{children:["You're all set, ",(0,n.jsx)(t.strong,{children:"you have successfully configured your MetaMask wallet"})," and connected it to ",(0,n.jsx)(t.strong,{children:"Autonomys Core EVM"}),". To deploy your smart contract, you first need to get a small amount of ",(0,n.jsx)(t.strong,{children:"TSSC"})," tokens into your wallet. Please make sure to refer to the ",(0,n.jsx)(t.a,{href:"/develop/nova/faucet",children:"faucet section"})," of the guide to learn more about getting test tokens."]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},48544:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-1-1bded85eeaf89c0daae434256fd88045.png"},26875:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-2-5f7e7f060708ba123fddb26362fdfb50.png"},12658:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-3-75874afd8bf6c5d17ee3574ba8dad9aa.png"},85165:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-4-e5f5ecae7bf1f748b681d8dfc5721af0.png"},45220:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-5-79ee39d84c4ddb91e413dcac10f5fe04.png"},99871:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-6-565644d1cd952a85c58125e61d4d8cb0.png"},3542:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-7-132a39939fc2424e79b95b82a3b7d82e.png"},31825:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-8-8739cf366556bb8646500e0974e1d665.png"},17608:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-9-b2ffa9d0e03a49767d7db5b53b9c7710.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>i});var n=s(96540);const a={},o=n.createContext(a);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ea18547f.c45312b0.js b/assets/js/ea18547f.c45312b0.js new file mode 100644 index 00000000000..bdd9e80d7cc --- /dev/null +++ b/assets/js/ea18547f.c45312b0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3586],{91530:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var n=s(74848),a=s(28453);const o={title:"Setting up MetaMask",sidebar_position:3,description:"Guide on setting up MetaMask for development purposes",slug:"/develop/auto-evm/metamask",keywords:["metamask","autonomys network"]},r=void 0,i={id:"develop/nova/setting-up-metamask",title:"Setting up MetaMask",description:"Guide on setting up MetaMask for development purposes",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/setting-up-metamask.md",sourceDirName:"develop/nova",slug:"/develop/auto-evm/metamask",permalink:"/develop/auto-evm/metamask",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/setting-up-metamask.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Setting up MetaMask",sidebar_position:3,description:"Guide on setting up MetaMask for development purposes",slug:"/develop/auto-evm/metamask",keywords:["metamask","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"General Information",permalink:"/develop/auto-evm/general"},next:{title:"Foundry",permalink:"/develop/auto-evm/guides/foundry"}},d={},l=[{value:"Adding Autonomys RPC using MetaMask",id:"adding-autonomys-rpc-using-metamask",level:3}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"adding-autonomys-rpc-using-metamask",children:"Adding Autonomys RPC using MetaMask"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["You can use any EVM-compatible wallet, this guide will be using ",(0,n.jsx)(t.a,{href:"https://metamask.io/",children:(0,n.jsx)(t.strong,{children:"MetaMask"})})," wallet."]}),"\n",(0,n.jsx)(t.p,{children:"First, let\u2019s set up a MetaMask wallet and then go over connecting it to the Autonomys Development Network."}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsxs)(t.li,{children:["Go to the ",(0,n.jsx)(t.a,{href:"https://metamask.io/",children:"MetaMask Website"})," and download an extension for your browser.\nSelect your preferred language in the top-right corner.\nRead and agree to MetaMask's terms of use."]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-1",src:s(48544).A+"",width:"350",height:"392"})}),"\n",(0,n.jsxs)(t.ol,{start:"2",children:["\n",(0,n.jsx)(t.li,{children:"Click on \u201cCreate a new wallet\u201d.\nRead a note on gathering usage data and either agree to collect your anonymized data, or skip this step. It does not affect the creation of a wallet."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-2",src:s(26875).A+"",width:"350",height:"468"})}),"\n",(0,n.jsxs)(t.ol,{start:"3",children:["\n",(0,n.jsx)(t.li,{children:"On the next screen you will be asked to create a password. Remember to always set a secure password that\u2019s difficult to guess. Type your password twice before proceeding to the next step."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-3",src:s(12658).A+"",width:"350",height:"346"})}),"\n",(0,n.jsxs)(t.ol,{start:"4",children:["\n",(0,n.jsxs)(t.li,{children:["MetaMask automatically assesses the strength of your password.","\n",(0,n.jsx)(t.admonition,{type:"tip",children:(0,n.jsx)(t.p,{children:"As a rule of thumb, you should set a strong password, meaning that it includes uppercase letters, lowercase letters, numbers and special characters."})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-4",src:s(85165).A+"",width:"350",height:"343"})}),"\n",(0,n.jsxs)(t.ol,{start:"5",children:["\n",(0,n.jsx)(t.li,{children:"Watch a video to learn more about your Secret Recovery Phrase before proceeding to the next step."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-5",src:s(45220).A+"",width:"350",height:"507"})}),"\n",(0,n.jsxs)(t.ol,{start:"6",children:["\n",(0,n.jsxs)(t.li,{children:["Have a look and write down your 12-word recovery phrase.","\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsx)(t.p,{children:"The wallet with the recovery phrase for this guide will be deleted right after the guide is complete."})}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-6",src:s(99871).A+"",width:"350",height:"464"})}),"\n",(0,n.jsxs)(t.ol,{start:"7",children:["\n",(0,n.jsx)(t.li,{children:"Confirm that you\u2019ve written down the recovery phrase by filling in the missing words of your recovery phrase."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-7",src:s(3542).A+"",width:"350",height:"332"})}),"\n",(0,n.jsxs)(t.ol,{start:"8",children:["\n",(0,n.jsx)(t.li,{children:"Now that your wallet is created, let\u2019s connect to the Autonomys Core EVM. Click on the Ethereum Mainnet logo and select Add Network."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-8",src:s(31825).A+"",width:"350",height:"357"})}),"\n",(0,n.jsxs)(t.ol,{start:"9",children:["\n",(0,n.jsx)(t.li,{children:"At the settings, click on \u201cAdd a network manually\u201d"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"MetaMask-9",src:s(17608).A+"",width:"1020",height:"650"})}),"\n",(0,n.jsxs)(t.ol,{start:"10",children:["\n",(0,n.jsx)(t.li,{children:"To connect to Autonomys RPC specify the values below"}),"\n"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"Network Name: Autonomys EVM\nNew RPC URL: https://auto-evm-0.taurus.subspace.network/ws\nChain ID: 490000\nCurrency Symbol: tAI3\n"})}),"\n",(0,n.jsxs)(t.p,{children:["You're all set, ",(0,n.jsx)(t.strong,{children:"you have successfully configured your MetaMask wallet"})," and connected it to ",(0,n.jsx)(t.strong,{children:"Autonomys Core EVM"}),". To deploy your smart contract, you first need to get a small amount of ",(0,n.jsx)(t.strong,{children:"tAI3"})," tokens into your wallet. Please make sure to refer to the ",(0,n.jsx)(t.a,{href:"/develop/auto-evm/faucet",children:"faucet section"})," of the guide to learn more about getting test tokens."]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},48544:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-1-1bded85eeaf89c0daae434256fd88045.png"},26875:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-2-5f7e7f060708ba123fddb26362fdfb50.png"},12658:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-3-75874afd8bf6c5d17ee3574ba8dad9aa.png"},85165:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-4-e5f5ecae7bf1f748b681d8dfc5721af0.png"},45220:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-5-79ee39d84c4ddb91e413dcac10f5fe04.png"},99871:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-6-565644d1cd952a85c58125e61d4d8cb0.png"},3542:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-7-132a39939fc2424e79b95b82a3b7d82e.png"},31825:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-8-8739cf366556bb8646500e0974e1d665.png"},17608:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/MetaMask-9-b2ffa9d0e03a49767d7db5b53b9c7710.png"},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>i});var n=s(96540);const a={},o=n.createContext(a);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ec9608a6.ccbe15b1.js b/assets/js/ec9608a6.ccbe15b1.js deleted file mode 100644 index ba646786488..00000000000 --- a/assets/js/ec9608a6.ccbe15b1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6783],{69312:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var o=t(74848),s=t(28453);const i={title:"Introduction",sidebar_position:1,description:"Quick start one-pager",slug:"/develop/nova/introduction",keywords:["autonomys network","quickstart"]},r=void 0,a={id:"develop/nova/intro",title:"Introduction",description:"Quick start one-pager",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/intro.mdx",sourceDirName:"develop/nova",slug:"/develop/nova/introduction",permalink:"/develop/nova/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/intro.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Introduction",sidebar_position:1,description:"Quick start one-pager",slug:"/develop/nova/introduction",keywords:["autonomys network","quickstart"]},sidebar:"tutorialSidebar",previous:{title:"\u264a Nova EVM",permalink:"/develop/nova"},next:{title:"General Information",permalink:"/develop/nova/general"}},l={},d=[{value:"The only tools needed to get you started",id:"the-only-tools-needed-to-get-you-started",level:2},{value:"Setup a MetaMask Wallet (or any other EVM-compatible wallet) and connect it to our custom EVM",id:"setup-a-metamask-wallet-or-any-other-evm-compatible-wallet-and-connect-it-to-our-custom-evm",level:3},{value:"Get tokens to your wallet using our faucet",id:"get-tokens-to-your-wallet-using-our-faucet",level:3},{value:"Test and deploy your smart contract",id:"test-and-deploy-your-smart-contract",level:3},{value:"Important note about submitting a transaction",id:"important-note-about-submitting-a-transaction",level:3},{value:"Gas Estimation Issue",id:"gas-estimation-issue",level:3},{value:"Solutions",id:"solutions",level:4},{value:"Solution examples",id:"solution-examples",level:4},{value:"Have any questions? Feel free to post them on our forum or in our Developer-chat on Discord.",id:"have-any-questions-feel-free-to-post-them-on-our-forum-or-in-our-developer-chat-on-discord",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.admonition,{type:"info",children:[(0,o.jsxs)(n.p,{children:["Currently, Nova is available exclusively on the ",(0,o.jsx)(n.strong,{children:"Gemini-3h"})," network. It will soon be accessible on the new test network, ",(0,o.jsx)(n.strong,{children:"Taurus"}),"."]}),(0,o.jsxs)(n.p,{children:["Nova's availability on the mainnet is planned for ",(0,o.jsx)(n.strong,{children:"Phase 2 of the mainnet launch"}),". For further details, please refer to our ",(0,o.jsx)(n.a,{href:"https://forum.autonomys.xyz/t/phased-launch-roadmap/4414",children:"Phased Launch Roadmap"})," post on the forum."]})]}),"\n",(0,o.jsx)(n.h2,{id:"the-only-tools-needed-to-get-you-started",children:"The only tools needed to get you started"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.p,{children:"The Quick Start is designed with the presumption that you are not a novice developer and have some basic understanding or experience. The Quick Start also anticipates that you seek a straightforward initiation into setting up a remote development environment."}),"\n",(0,o.jsx)(n.p,{children:"Autonomys utilizes EVM (Ethereum Virtual Machine) so any tool available for Ethereum development is compatible with Autonomys."}),"\n",(0,o.jsx)(n.h3,{id:"setup-a-metamask-wallet-or-any-other-evm-compatible-wallet-and-connect-it-to-our-custom-evm",children:"Setup a MetaMask Wallet (or any other EVM-compatible wallet) and connect it to our custom EVM"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"Network Name: Autonomys EVM\nNew RPC URL: https://nova-0.gemini-3h.subspace.network/ws\nChain ID: 490000\nCurrency Symbol: TSSC\n"})}),"\n",(0,o.jsx)(n.h3,{id:"get-tokens-to-your-wallet-using-our-faucet",children:"Get tokens to your wallet using our faucet"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:["Follow the instructions ",(0,o.jsx)(n.a,{href:"/develop/nova/faucet",children:"here"})," to use our ",(0,o.jsx)(n.strong,{children:"Faucet"})," to get some TSSC."]}),"\n",(0,o.jsx)(n.h3,{id:"test-and-deploy-your-smart-contract",children:"Test and deploy your smart contract"}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:["You can use ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.a,{href:"https://remix.ethereum.org/",children:"Remix"})}),", ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})})," or any other tool familiar to you for testing and deploying your smart contracts. Just make sure to use our custom EVM domain and you're all set."]}),"\n",(0,o.jsx)(n.p,{children:"If anything above sounds unfamiliar, you can always fall back to our full guide."}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h3,{id:"important-note-about-submitting-a-transaction",children:"Important note about submitting a transaction"}),"\n",(0,o.jsx)(n.p,{children:"Please avoid attempting to accelerate a transaction by including a tip alongside the gas fees. The transaction queue operates differently with Autonomys, leading to the possibility of two transactions sharing the same nonce. This could result in dual charges for gas fees - once for the execution and storage in the first transaction, and solely for storage in the second transaction. To prevent this scenario, ensure that you refrain from adding a tip in an attempt to speed the transaction up."}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h3,{id:"gas-estimation-issue",children:"Gas Estimation Issue"}),"\n",(0,o.jsxs)(n.p,{children:["When deploying smart contracts to our EVM-compatible domain ",(0,o.jsx)(n.strong,{children:"Nova"}),", you may encounter an error related to gas estimation, typically presenting as:"]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:'"No manual gas limit set" or "Gas estimation failed"'}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This issue often occurs because development tools like Foundry simulate transactions and use calculated or hardcoded gas estimation instead of querying the RPC (Remote Procedure Call) for it. ",(0,o.jsx)(n.strong,{children:"Nova"})," may require different gas amounts for certain operations compared to other EVM-compatible chains like Ethereum's testnets."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We have submitted an upstream PR to fix this issue with ",(0,o.jsx)(n.strong,{children:"Foundry"}),". Described below are the workarounds, until the issue is resolved by the ",(0,o.jsx)(n.strong,{children:"Foundry team"}),"."]})}),"\n",(0,o.jsx)(n.h4,{id:"solutions",children:"Solutions"}),"\n",(0,o.jsx)(n.p,{children:"If you encounter this issue, try the following solutions:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Skip simulation: Use the ",(0,o.jsx)(n.code,{children:"--skip-simulation"})," flag when deploying with Foundry to bypass built-in simulation and rely on RPC for gas estimation."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Set manual gas limit: Specify a higher gas limit manually in your deployment command or UI."}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Adjust deployment script: Modify your script to include custom gas settings or implement ",(0,o.jsx)(n.code,{children:"try/catch"})," blocks for handling deployment failures."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Use Web3 provider: If using ",(0,o.jsx)(n.strong,{children:"Remix IDE"}),", switch to ",(0,o.jsx)(n.code,{children:"Injected Web3"})," environment to leverage external Web3 providers like MetaMask."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Custom deployment function: Create a deployment function with adjustable gas parameters."}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h4,{id:"solution-examples",children:"Solution examples"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Foundry"})}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Try using ",(0,o.jsx)(n.code,{children:"--skip-simulation"})," flag: ",(0,o.jsx)(n.code,{children:"forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --skip-simulation"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Try setting the gas limit manually: ",(0,o.jsx)(n.code,{children:"forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --gas-limit 300000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Adjust the gas limit value as needed. Start with a higher value and gradually lower it to find the optimal limit."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Remix IDE"})}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Try settiing gas limit manually: In the ",(0,o.jsx)(n.strong,{children:"Deploy & Run Transactions"})," panel, expand the ",(0,o.jsx)(n.strong,{children:"Advanced"})," section.\nSet a higher value in the ",(0,o.jsx)(n.strong,{children:"Gas Limit"})," field. Try starting with ",(0,o.jsx)(n.strong,{children:"300000"})," and adjust as needed."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Try adjusting gas price: In the same ",(0,o.jsx)(n.strong,{children:"Advanced"})," section, you can also adjust the ",(0,o.jsx)(n.strong,{children:"Gas Price"})," if needed."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Try switching to the ",(0,o.jsx)(n.strong,{children:"Injected Web3"})," environment in the ",(0,o.jsx)(n.strong,{children:"Deploy & Run Transactions"})," panel. This will use your browser's Web3 provider (like MetaMask) which might handle gas estimation better for the network."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"If the above steps don't work, you can create a custom deployment function that includes gas parameters:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"function deployWithCustomGas(uint256 gasLimit, uint256 gasPrice) public returns (address) {\n return address(new YourContract{gas: gasLimit, gasPrice: gasPrice}());\n}\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Other possible solution"})}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Modify your deployment script and override the default gas settings:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"vm.txGasPrice(uint256 gasPrice);\nvm.txGasLimit(uint256 gasLimit);\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Implement a try/catch block in your script to handle gas estimation failures:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'try yourContract.deploy{gas: 300000}(constructorArgs) returns (YourContract deployed) {\n // Deployment successful\n} catch Error(string memory reason) {\n console.log("Deployment failed:", reason);\n}\n'})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.h3,{id:"have-any-questions-feel-free-to-post-them-on-our-forum-or-in-our-developer-chat-on-discord",children:["Have any questions? Feel free to post them on ",(0,o.jsx)(n.a,{href:"https://forum.autonomys.xyz/",children:"our forum"})," or in our ",(0,o.jsx)(n.a,{href:"https://discord.gg/EAw6B48r",children:"Developer-chat on Discord"}),"."]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.p,{children:"In order to get access to the role-gated developer chat:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Join our ",(0,o.jsx)(n.a,{href:"https://discord.gg/vhv5cEZN",children:"Discord"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Click on Autonomys Network at the top left corner and choose ",(0,o.jsx)(n.strong,{children:"Linked Roles"}),"."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Discord-1",src:t(70603).A+"",width:"231",height:"539"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Link your GitHub account to get a developer role and gain access to ",(0,o.jsx)(n.strong,{children:"developer-chat"}),".\n",(0,o.jsx)(n.img,{alt:"Discord-2",src:t(752).A+"",width:"737",height:"206"})]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},70603:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Discord-1-25bd70f76741163d9340dee4581cdb68.png"},752:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/Discord-2-f26a783c4324243dec4a1c10235f646f.png"},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var o=t(96540);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ec9608a6.e6a46a2f.js b/assets/js/ec9608a6.e6a46a2f.js new file mode 100644 index 00000000000..046825b11f8 --- /dev/null +++ b/assets/js/ec9608a6.e6a46a2f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6783],{69312:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=n(74848),s=n(28453);const r={title:"Introduction",sidebar_position:1,description:"Quick start one-pager",slug:"/develop/auto-evm/introduction",keywords:["autonomys network","quickstart"]},i=void 0,a={id:"develop/nova/intro",title:"Introduction",description:"Quick start one-pager",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/intro.mdx",sourceDirName:"develop/nova",slug:"/develop/auto-evm/introduction",permalink:"/develop/auto-evm/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/intro.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Introduction",sidebar_position:1,description:"Quick start one-pager",slug:"/develop/auto-evm/introduction",keywords:["autonomys network","quickstart"]},sidebar:"tutorialSidebar",previous:{title:"\u264a Auto EVM",permalink:"/develop/auto-evm"},next:{title:"General Information",permalink:"/develop/auto-evm/general"}},l={},d=[{value:"The only tools needed to get you started",id:"the-only-tools-needed-to-get-you-started",level:2},{value:"Setup a MetaMask Wallet (or any other EVM-compatible wallet) and connect it to our custom EVM",id:"setup-a-metamask-wallet-or-any-other-evm-compatible-wallet-and-connect-it-to-our-custom-evm",level:3},{value:"Get tokens to your wallet using our faucet",id:"get-tokens-to-your-wallet-using-our-faucet",level:3},{value:"Test and deploy your smart contract",id:"test-and-deploy-your-smart-contract",level:3},{value:"Important note about submitting a transaction",id:"important-note-about-submitting-a-transaction",level:3},{value:"Gas Estimation Issue",id:"gas-estimation-issue",level:3},{value:"Solutions",id:"solutions",level:4},{value:"Solution examples",id:"solution-examples",level:4},{value:"Have any questions? Feel free to post them on our forum or in our Developer-chat on Discord.",id:"have-any-questions-feel-free-to-post-them-on-our-forum-or-in-our-developer-chat-on-discord",level:3}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.admonition,{type:"info",children:[(0,o.jsxs)(t.p,{children:["Currently, Auto EVM is available exclusively on ",(0,o.jsx)(t.strong,{children:"Taurus"})," network."]}),(0,o.jsxs)(t.p,{children:["Auto EVM's availability on the mainnet is planned for ",(0,o.jsx)(t.strong,{children:"Phase 2 of the mainnet launch"}),". For further details, please refer to our ",(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/phased-launch-roadmap/4414",children:"Phased Launch Roadmap"})," post on the forum."]})]}),"\n",(0,o.jsx)(t.h2,{id:"the-only-tools-needed-to-get-you-started",children:"The only tools needed to get you started"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.p,{children:"The Quick Start is designed with the presumption that you are not a novice developer and have some basic understanding or experience. The Quick Start also anticipates that you seek a straightforward initiation into setting up a remote development environment."}),"\n",(0,o.jsx)(t.p,{children:"Autonomys utilizes EVM (Ethereum Virtual Machine) so any tool available for Ethereum development is compatible with Autonomys."}),"\n",(0,o.jsx)(t.h3,{id:"setup-a-metamask-wallet-or-any-other-evm-compatible-wallet-and-connect-it-to-our-custom-evm",children:"Setup a MetaMask Wallet (or any other EVM-compatible wallet) and connect it to our custom EVM"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"Network Name: Autonomys EVM\nNew RPC URL: https://auto-evm-0.taurus.subspace.network/ws\nChain ID: 490000\nCurrency Symbol: tAI3\n"})}),"\n",(0,o.jsx)(t.h3,{id:"get-tokens-to-your-wallet-using-our-faucet",children:"Get tokens to your wallet using our faucet"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.p,{children:["Follow the instructions ",(0,o.jsx)(t.a,{href:"/develop/auto-evm/faucet",children:"here"})," to use our ",(0,o.jsx)(t.strong,{children:"Faucet"})," to get some tAI3."]}),"\n",(0,o.jsx)(t.h3,{id:"test-and-deploy-your-smart-contract",children:"Test and deploy your smart contract"}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.p,{children:["You can use ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"https://remix.ethereum.org/",children:"Remix"})}),", ",(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})})," or any other tool familiar to you for testing and deploying your smart contracts. Just make sure to use our custom EVM domain and you're all set."]}),"\n",(0,o.jsx)(t.p,{children:"If anything above sounds unfamiliar, you can always fall back to our full guide."}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"important-note-about-submitting-a-transaction",children:"Important note about submitting a transaction"}),"\n",(0,o.jsx)(t.p,{children:"Please avoid attempting to accelerate a transaction by including a tip alongside the gas fees. The transaction queue operates differently with Autonomys, leading to the possibility of two transactions sharing the same nonce. This could result in dual charges for gas fees - once for the execution and storage in the first transaction, and solely for storage in the second transaction. To prevent this scenario, ensure that you refrain from adding a tip in an attempt to speed the transaction up."}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.h3,{id:"gas-estimation-issue",children:"Gas Estimation Issue"}),"\n",(0,o.jsxs)(t.p,{children:["When deploying smart contracts to our EVM-compatible domain ",(0,o.jsx)(t.strong,{children:"Auto EVM"}),", you may encounter an error related to gas estimation, typically presenting as:"]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:'"No manual gas limit set" or "Gas estimation failed"'}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["This issue often occurs because development tools like Foundry simulate transactions and use calculated or hardcoded gas estimation instead of querying the RPC (Remote Procedure Call) for it. ",(0,o.jsx)(t.strong,{children:"Auto EVM"})," may require different gas amounts for certain operations compared to other EVM-compatible chains like Ethereum's testnets."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["We have submitted an upstream PR to fix this issue with ",(0,o.jsx)(t.strong,{children:"Foundry"}),". Described below are the workarounds, until the issue is resolved by the ",(0,o.jsx)(t.strong,{children:"Foundry team"}),"."]})}),"\n",(0,o.jsx)(t.h4,{id:"solutions",children:"Solutions"}),"\n",(0,o.jsx)(t.p,{children:"If you encounter this issue, try the following solutions:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Skip simulation: Use the ",(0,o.jsx)(t.code,{children:"--skip-simulation"})," flag when deploying with Foundry to bypass built-in simulation and rely on RPC for gas estimation."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Set manual gas limit: Specify a higher gas limit manually in your deployment command or UI."}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Adjust deployment script: Modify your script to include custom gas settings or implement ",(0,o.jsx)(t.code,{children:"try/catch"})," blocks for handling deployment failures."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Use Web3 provider: If using ",(0,o.jsx)(t.strong,{children:"Remix IDE"}),", switch to ",(0,o.jsx)(t.code,{children:"Injected Web3"})," environment to leverage external Web3 providers like MetaMask."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Custom deployment function: Create a deployment function with adjustable gas parameters."}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h4,{id:"solution-examples",children:"Solution examples"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Foundry"})}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Try using ",(0,o.jsx)(t.code,{children:"--skip-simulation"})," flag: ",(0,o.jsx)(t.code,{children:"forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --skip-simulation"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Try setting the gas limit manually: ",(0,o.jsx)(t.code,{children:"forge script path/to/your/script.s.sol --rpc-url your_rpc_url --private-key your_private_key --broadcast --gas-limit 300000"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Adjust the gas limit value as needed. Start with a higher value and gradually lower it to find the optimal limit."}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Remix IDE"})}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Try settiing gas limit manually: In the ",(0,o.jsx)(t.strong,{children:"Deploy & Run Transactions"})," panel, expand the ",(0,o.jsx)(t.strong,{children:"Advanced"})," section.\nSet a higher value in the ",(0,o.jsx)(t.strong,{children:"Gas Limit"})," field. Try starting with ",(0,o.jsx)(t.strong,{children:"300000"})," and adjust as needed."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Try adjusting gas price: In the same ",(0,o.jsx)(t.strong,{children:"Advanced"})," section, you can also adjust the ",(0,o.jsx)(t.strong,{children:"Gas Price"})," if needed."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Try switching to the ",(0,o.jsx)(t.strong,{children:"Injected Web3"})," environment in the ",(0,o.jsx)(t.strong,{children:"Deploy & Run Transactions"})," panel. This will use your browser's Web3 provider (like MetaMask) which might handle gas estimation better for the network."]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"If the above steps don't work, you can create a custom deployment function that includes gas parameters:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"function deployWithCustomGas(uint256 gasLimit, uint256 gasPrice) public returns (address) {\n return address(new YourContract{gas: gasLimit, gasPrice: gasPrice}());\n}\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.strong,{children:"Other possible solution"})}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Modify your deployment script and override the default gas settings:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"vm.txGasPrice(uint256 gasPrice);\nvm.txGasLimit(uint256 gasLimit);\n"})}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsx)(t.p,{children:"Implement a try/catch block in your script to handle gas estimation failures:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:'try yourContract.deploy{gas: 300000}(constructorArgs) returns (YourContract deployed) {\n // Deployment successful\n} catch Error(string memory reason) {\n console.log("Deployment failed:", reason);\n}\n'})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsxs)(t.h3,{id:"have-any-questions-feel-free-to-post-them-on-our-forum-or-in-our-developer-chat-on-discord",children:["Have any questions? Feel free to post them on ",(0,o.jsx)(t.a,{href:"https://forum.autonomys.xyz/",children:"our forum"})," or in our ",(0,o.jsx)(t.a,{href:"https://discord.gg/EAw6B48r",children:"Developer-chat on Discord"}),"."]}),"\n",(0,o.jsx)(t.hr,{}),"\n",(0,o.jsx)(t.p,{children:"In order to get access to the role-gated developer chat:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Join our ",(0,o.jsx)(t.a,{href:"https://discord.gg/vhv5cEZN",children:"Discord"})]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Click on Autonomys Network at the top left corner and choose ",(0,o.jsx)(t.strong,{children:"Linked Roles"}),"."]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Discord-1",src:n(70603).A+"",width:"231",height:"539"})}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Link your GitHub account to get a developer role and gain access to ",(0,o.jsx)(t.strong,{children:"developer-chat"}),".\n",(0,o.jsx)(t.img,{alt:"Discord-2",src:n(752).A+"",width:"737",height:"206"})]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},70603:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/Discord-1-25bd70f76741163d9340dee4581cdb68.png"},752:(e,t,n)=>{n.d(t,{A:()=>o});const o=n.p+"assets/images/Discord-2-f26a783c4324243dec4a1c10235f646f.png"},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var o=n(96540);const s={},r=o.createContext(s);function i(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ee76913c.1cd8e41a.js b/assets/js/ee76913c.1cd8e41a.js deleted file mode 100644 index f33d07ae5ae..00000000000 --- a/assets/js/ee76913c.1cd8e41a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8578],{67928:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>s,contentTitle:()=>t,default:()=>p,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var o=a(74848),i=a(28453);const r={title:"Drive",sidebar_position:6,description:"Utilities for creating and managing IPLD DAGs",slug:"/develop/auto-sdk/drive",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK","Auto Drive"]},t=void 0,d={id:"develop/auto_sdk/auto-drive",title:"Drive",description:"Utilities for creating and managing IPLD DAGs",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-drive.md",sourceDirName:"develop/auto_sdk",slug:"/develop/auto-sdk/drive",permalink:"/develop/auto-sdk/drive",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/auto_sdk/auto-drive.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Drive",sidebar_position:6,description:"Utilities for creating and managing IPLD DAGs",slug:"/develop/auto-sdk/drive",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK","Auto Drive"]},sidebar:"tutorialSidebar",previous:{title:"Utils",permalink:"/develop/auto-sdk/utils"},next:{title:"\u264a Nova EVM",permalink:"/develop/nova"}},s={},l=[{value:"Auto-Drive Package Documentation",id:"auto-drive-package-documentation",level:2},{value:"Introduction",id:"introduction",level:3},{value:"Features",id:"features",level:3},{value:"Installation",id:"installation",level:3},{value:"Importing the Package",id:"importing-the-package",level:3},{value:"Available Functions",id:"available-functions",level:2},{value:"File and Folder DAG Creation",id:"file-and-folder-dag-creation",level:3},{value:"CID Utilities",id:"cid-utilities",level:3},{value:"Node Encoding and Decoding",id:"node-encoding-and-decoding",level:3},{value:"Metadata Handling",id:"metadata-handling",level:3},{value:"Upload and Download Operations",id:"upload-and-download-operations",level:3},{value:"Usage Examples",id:"usage-examples",level:2},{value:"1. Creating an IPLD DAG from a File",id:"1-creating-an-ipld-dag-from-a-file",level:3},{value:"2. Creating an IPLD DAG from a Folder",id:"2-creating-an-ipld-dag-from-a-folder",level:3},{value:"3. Working with CIDs",id:"3-working-with-cids",level:3},{value:"4. Encoding and Decoding Nodes",id:"4-encoding-and-decoding-nodes",level:3},{value:"5. Handling Metadata",id:"5-handling-metadata",level:3},{value:"6. Example: Creating a File DAG and Converting to CID",id:"6-example-creating-a-file-dag-and-converting-to-cid",level:3},{value:"7. Example: Converting Metadata to DAG",id:"7-example-converting-metadata-to-dag",level:3},{value:"8. Uploading a File from Filepath",id:"8-uploading-a-file-from-filepath",level:3},{value:"9. Uploading a File with Custom Interface",id:"9-uploading-a-file-with-custom-interface",level:3},{value:"10. Uploading a Folder",id:"10-uploading-a-folder",level:3},{value:"11. Tracking Upload Progress",id:"11-tracking-upload-progress",level:3},{value:"12. Downloading a File",id:"12-downloading-a-file",level:3},{value:"Notes",id:"notes",level:2}];function c(e){const n={code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"auto-drive-package-documentation",children:"Auto-Drive Package Documentation"}),"\n",(0,o.jsx)(n.h3,{id:"introduction",children:"Introduction"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"@autonomys/auto-drive"})," package provides utilities for creating and managing IPLD DAGs (InterPlanetary Linked Data Directed Acyclic Graphs) for files and folders. It facilitates chunking large files, handling metadata, and creating folder structures suitable for distributed storage systems like IPFS."]}),"\n",(0,o.jsx)(n.h3,{id:"features",children:"Features"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"File Chunking and DAG Creation"}),": Efficiently split large files into smaller chunks and create IPLD DAGs."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Folder Structure Creation"}),": Generate IPLD DAGs for directory structures."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Metadata Handling"}),": Add and manage metadata for files and folders."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"CID Management"}),": Utilities for working with Content Identifiers (CIDs)."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"TypeScript Support"}),": Fully typed for enhanced developer experience."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"installation",children:"Installation"}),"\n",(0,o.jsx)(n.p,{children:"Install the package via npm or yarn:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"# Using npm\nnpm install @autonomys/auto-drive\n\n# Using yarn\nyarn add @autonomys/auto-drive\n"})}),"\n",(0,o.jsx)(n.h3,{id:"importing-the-package",children:"Importing the Package"}),"\n",(0,o.jsxs)(n.p,{children:["Before using the functions provided by the ",(0,o.jsx)(n.code,{children:"auto-drive"})," package, you need to import them into your project:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"// Import specific functions\nimport { createFileIPLDDag, createFolderIPLDDag } from '@autonomys/auto-drive';\n\n// Or import everything\nimport * as drive from '@autonomys/auto-drive';\n"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"available-functions",children:"Available Functions"}),"\n",(0,o.jsx)(n.h3,{id:"file-and-folder-dag-creation",children:"File and Folder DAG Creation"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createFileIPLDDag(fileBuffer, fileName): IPLDDag"})}),": Creates an IPLD DAG for a file from its buffer and name."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createFolderIPLDDag(childCIDs, folderName, folderSize): IPLDDag"})}),": Creates an IPLD DAG for a folder with given child CIDs, name, and size."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"cid-utilities",children:"CID Utilities"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"cidOfNode(node): CID"})}),": Generates a CID from an IPLD node."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"cidToString(cid): string"})}),": Converts a CID to its string representation."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"stringToCid(cidString): CID"})}),": Parses a CID string back into a CID object."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"node-encoding-and-decoding",children:"Node Encoding and Decoding"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"encodeNode(node): Uint8Array"})}),": Encodes an IPLD node into a byte array."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"decodeNode(encodedNode): any"})}),": Decodes a byte array back into an IPLD node."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"metadata-handling",children:"Metadata Handling"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createMetadataNode(metadata): any"})}),": Creates a metadata node for an IPLD DAG."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createMetadataIPLDDag(metadata): IPLDDag"})}),": Creates an IPLD DAG for metadata."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"upload-and-download-operations",children:"Upload and Download Operations"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFile(api, file, options): PromisedObservable"})}),": Uploads a file with optional encryption and compression."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFileFromFilepath(api, filepath, options): PromisedObservable"})}),": Uploads a file from a filesystem path."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFolderFromFolderPath(api, folderPath, options): PromisedObservable"})}),": Uploads a folder from a filesystem path."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"downloadObject(api, params): AsyncIterable"})}),": Downloads an object by its CID."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.em,{children:"Note:"})," All asynchronous functions return a ",(0,o.jsx)(n.code,{children:"Promise"})," and should be used with ",(0,o.jsx)(n.code,{children:"await"})," for proper execution flow."]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"usage-examples",children:"Usage Examples"}),"\n",(0,o.jsx)(n.h3,{id:"1-creating-an-ipld-dag-from-a-file",children:"1. Creating an IPLD DAG from a File"}),"\n",(0,o.jsx)(n.p,{children:"Create an IPLD DAG for a file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFileIPLDDag } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst fileBuffer = fs.readFileSync('path/to/your/file.txt');\n\nconst dag = createFileIPLDDag(fileBuffer, 'file.txt');\n\nconsole.log('File DAG created:', dag);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"2-creating-an-ipld-dag-from-a-folder",children:"2. Creating an IPLD DAG from a Folder"}),"\n",(0,o.jsx)(n.p,{children:"Create an IPLD DAG for a folder:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFolderIPLDDag } from '@autonomys/auto-drive';\nimport { CID } from 'multiformats';\n\n// Example child CIDs and folder information\nconst childCIDs: CID[] = [\n /* array of CIDs */\n];\nconst folderName = 'my-folder';\nconst folderSize = 1024; // size in bytes\n\nconst folderDag = createFolderIPLDDag(childCIDs, folderName, folderSize);\n\nconsole.log('Folder DAG created:', folderDag);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"3-working-with-cids",children:"3. Working with CIDs"}),"\n",(0,o.jsx)(n.p,{children:"Generate and manipulate CIDs:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { cidOfNode, cidToString, stringToCid } from '@autonomys/auto-drive';\n\n// Assuming you have an IPLD node\nconst node = { /* IPLD node data */ };\n\n// Create a CID from a node\nconst cid = cidOfNode(node);\n\n// Convert the CID to a string\nconst cidString = cidToString(cid);\nconsole.log('CID as string:', cidString);\n\n// Parse a string back into a CID\nconst parsedCID = stringToCid(cidString);\nconsole.log('Parsed CID:', parsedCID);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"4-encoding-and-decoding-nodes",children:"4. Encoding and Decoding Nodes"}),"\n",(0,o.jsx)(n.p,{children:"Encode and decode IPLD nodes:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { encodeNode, decodeNode } from '@autonomys/auto-drive';\n\n// Assume you have an IPLD node\nconst node = { /* IPLD node data */ };\n\n// Encode a node\nconst encodedNode = encodeNode(node);\n\n// Decode a node\nconst decodedNode = decodeNode(encodedNode);\n\nconsole.log('Decoded node:', decodedNode);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"5-handling-metadata",children:"5. Handling Metadata"}),"\n",(0,o.jsx)(n.p,{children:"Add metadata to a node:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createMetadataNode } from '@autonomys/auto-drive';\n\nconst metadata = {\n name: 'My File',\n description: 'This is a sample file',\n // ... other metadata fields\n};\n\nconst metadataNode = createMetadataNode(metadata);\n\nconsole.log('Metadata node created:', metadataNode);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"6-example-creating-a-file-dag-and-converting-to-cid",children:"6. Example: Creating a File DAG and Converting to CID"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFileIPLDDag, cidOfNode, cidToString } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst fileBuffer = fs.readFileSync('path/to/your/file.txt');\n\nconst dag = createFileIPLDDag(fileBuffer, 'file.txt');\n\n// Generate CID from the DAG\nconst cid = cidOfNode(dag.head);\n\n// Convert CID to string\nconst cidString = cidToString(cid);\n\nconsole.log(`CID of the file DAG: ${cidString}`);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"7-example-converting-metadata-to-dag",children:"7. Example: Converting Metadata to DAG"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import {\n createMetadataIPLDDag,\n cidOfNode,\n cidToString,\n type OffchainMetadata,\n} from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst metadataContent = fs.readFileSync('path/to/your/metadata.json', 'utf-8');\nconst metadata: OffchainMetadata = JSON.parse(metadataContent);\n\nconst dag = createMetadataIPLDDag(metadata);\n\nconst cid = cidOfNode(dag.head);\nconst cidString = cidToString(cid);\n\nconsole.log(`CID of the metadata DAG: ${cidString}`);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"8-uploading-a-file-from-filepath",children:"8. Uploading a File from Filepath"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFileFromFilepath, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst filePath = 'path/to/your/file.txt';\nconst options = {\n password: 'your-encryption-password', // Optional\n compression: true,\n};\n\nconst uploadObservable = uploadFileFromFilepath(api, filePath, options)\n .then(() => {\n console.log('File uploaded successfully!');\n })\n .catch((error) => {\n console.error('Error uploading file:', error);\n });\n"})}),"\n",(0,o.jsx)(n.h3,{id:"9-uploading-a-file-with-custom-interface",children:"9. Uploading a File with Custom Interface"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFile, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst buffer = Buffer.from(/* ... */);\nconst genericFile = {\n read: async function *() {\n yield buffer;\n },\n name: \"autonomys-whitepaper.pdf\",\n mimeType: \"application/pdf\",\n size: 1234556,\n path: \"autonomys-whitepaper.pdf\"\n};\n\nconst options = {\n password: 'your-encryption-password',\n compression: true,\n};\n\nconst uploadObservable = uploadFile(api, genericFile, options)\n .then(() => {\n console.log('File uploaded successfully!');\n })\n .catch((error) => {\n console.error('Error uploading file:', error);\n });\n"})}),"\n",(0,o.jsx)(n.h3,{id:"10-uploading-a-folder",children:"10. Uploading a Folder"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFolderFromFolderPath, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst folderPath = 'path/to/your/folder';\n\nconst options = {\n uploadChunkSize: 1024 * 1024,\n password: 'your-encryption-password',\n};\n\nconst uploadObservable = uploadFolderFromFolderPath(api, folderPath, options);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"11-tracking-upload-progress",children:"11. Tracking Upload Progress"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { useState, useEffect } from 'react';\nimport { uploadFile, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst UploadComponent = () => {\n const [progress, setProgress] = useState(0);\n\n useEffect(() => {\n const uploadFile = async () => {\n const api = createAutoDriveApi({ apiKey: 'your-api-key' });\n const finalStatus = await uploadFile(api, genericFile, options).forEach((status) => {\n setProgress(status.progress);\n });\n };\n uploadFile();\n }, []);\n\n return
Upload Progress: {progress}%
;\n};\n"})}),"\n",(0,o.jsx)(n.h3,{id:"12-downloading-a-file",children:"12. Downloading a File"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { downloadObject, createAutoDriveApi } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\n\ntry {\n const stream = fs.createWriteStream('/path/to/file');\n const asyncBuffer = await downloadObject(api, { cid: 'your-cid' });\n for await (const buffer of asyncBuffer) {\n stream.write(buffer);\n }\n} catch (error) {\n console.error('Error downloading file:', error);\n}\n"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"notes",children:"Notes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Asynchronous Functions"}),": Use ",(0,o.jsx)(n.code,{children:"await"})," with all promises for proper execution flow."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Error Handling"}),": Wrap asynchronous calls in ",(0,o.jsx)(n.code,{children:"try...catch"})," blocks to handle potential errors gracefully."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"File System Operations"}),": Ensure that file paths are correct and accessible when reading from or writing to the file system."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},28453:(e,n,a)=>{a.d(n,{R:()=>t,x:()=>d});var o=a(96540);const i={},r=o.createContext(i);function t(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ee76913c.ff033862.js b/assets/js/ee76913c.ff033862.js new file mode 100644 index 00000000000..84b41fd9fff --- /dev/null +++ b/assets/js/ee76913c.ff033862.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8578],{67928:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>s,contentTitle:()=>t,default:()=>p,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var o=a(74848),i=a(28453);const r={title:"Drive",sidebar_position:6,description:"Utilities for creating and managing IPLD DAGs",slug:"/develop/auto-sdk/drive",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK","Auto Drive"]},t=void 0,d={id:"develop/auto_sdk/auto-drive",title:"Drive",description:"Utilities for creating and managing IPLD DAGs",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-drive.md",sourceDirName:"develop/auto_sdk",slug:"/develop/auto-sdk/drive",permalink:"/develop/auto-sdk/drive",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/auto_sdk/auto-drive.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{title:"Drive",sidebar_position:6,description:"Utilities for creating and managing IPLD DAGs",slug:"/develop/auto-sdk/drive",keywords:["Developers Documentation","DevDocs","SDK","Auto SDK","Auto Drive"]},sidebar:"tutorialSidebar",previous:{title:"Utils",permalink:"/develop/auto-sdk/utils"},next:{title:"\u264a Auto EVM",permalink:"/develop/auto-evm"}},s={},l=[{value:"Auto-Drive Package Documentation",id:"auto-drive-package-documentation",level:2},{value:"Introduction",id:"introduction",level:3},{value:"Features",id:"features",level:3},{value:"Installation",id:"installation",level:3},{value:"Importing the Package",id:"importing-the-package",level:3},{value:"Available Functions",id:"available-functions",level:2},{value:"File and Folder DAG Creation",id:"file-and-folder-dag-creation",level:3},{value:"CID Utilities",id:"cid-utilities",level:3},{value:"Node Encoding and Decoding",id:"node-encoding-and-decoding",level:3},{value:"Metadata Handling",id:"metadata-handling",level:3},{value:"Upload and Download Operations",id:"upload-and-download-operations",level:3},{value:"Usage Examples",id:"usage-examples",level:2},{value:"1. Creating an IPLD DAG from a File",id:"1-creating-an-ipld-dag-from-a-file",level:3},{value:"2. Creating an IPLD DAG from a Folder",id:"2-creating-an-ipld-dag-from-a-folder",level:3},{value:"3. Working with CIDs",id:"3-working-with-cids",level:3},{value:"4. Encoding and Decoding Nodes",id:"4-encoding-and-decoding-nodes",level:3},{value:"5. Handling Metadata",id:"5-handling-metadata",level:3},{value:"6. Example: Creating a File DAG and Converting to CID",id:"6-example-creating-a-file-dag-and-converting-to-cid",level:3},{value:"7. Example: Converting Metadata to DAG",id:"7-example-converting-metadata-to-dag",level:3},{value:"8. Uploading a File from Filepath",id:"8-uploading-a-file-from-filepath",level:3},{value:"9. Uploading a File with Custom Interface",id:"9-uploading-a-file-with-custom-interface",level:3},{value:"10. Uploading a Folder",id:"10-uploading-a-folder",level:3},{value:"11. Tracking Upload Progress",id:"11-tracking-upload-progress",level:3},{value:"12. Downloading a File",id:"12-downloading-a-file",level:3},{value:"Notes",id:"notes",level:2}];function c(e){const n={code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h2,{id:"auto-drive-package-documentation",children:"Auto-Drive Package Documentation"}),"\n",(0,o.jsx)(n.h3,{id:"introduction",children:"Introduction"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"@autonomys/auto-drive"})," package provides utilities for creating and managing IPLD DAGs (InterPlanetary Linked Data Directed Acyclic Graphs) for files and folders. It facilitates chunking large files, handling metadata, and creating folder structures suitable for distributed storage systems like IPFS."]}),"\n",(0,o.jsx)(n.h3,{id:"features",children:"Features"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"File Chunking and DAG Creation"}),": Efficiently split large files into smaller chunks and create IPLD DAGs."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Folder Structure Creation"}),": Generate IPLD DAGs for directory structures."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Metadata Handling"}),": Add and manage metadata for files and folders."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"CID Management"}),": Utilities for working with Content Identifiers (CIDs)."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"TypeScript Support"}),": Fully typed for enhanced developer experience."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"installation",children:"Installation"}),"\n",(0,o.jsx)(n.p,{children:"Install the package via npm or yarn:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"# Using npm\nnpm install @autonomys/auto-drive\n\n# Using yarn\nyarn add @autonomys/auto-drive\n"})}),"\n",(0,o.jsx)(n.h3,{id:"importing-the-package",children:"Importing the Package"}),"\n",(0,o.jsxs)(n.p,{children:["Before using the functions provided by the ",(0,o.jsx)(n.code,{children:"auto-drive"})," package, you need to import them into your project:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"// Import specific functions\nimport { createFileIPLDDag, createFolderIPLDDag } from '@autonomys/auto-drive';\n\n// Or import everything\nimport * as drive from '@autonomys/auto-drive';\n"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"available-functions",children:"Available Functions"}),"\n",(0,o.jsx)(n.h3,{id:"file-and-folder-dag-creation",children:"File and Folder DAG Creation"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createFileIPLDDag(fileBuffer, fileName): IPLDDag"})}),": Creates an IPLD DAG for a file from its buffer and name."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createFolderIPLDDag(childCIDs, folderName, folderSize): IPLDDag"})}),": Creates an IPLD DAG for a folder with given child CIDs, name, and size."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"cid-utilities",children:"CID Utilities"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"cidOfNode(node): CID"})}),": Generates a CID from an IPLD node."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"cidToString(cid): string"})}),": Converts a CID to its string representation."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"stringToCid(cidString): CID"})}),": Parses a CID string back into a CID object."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"node-encoding-and-decoding",children:"Node Encoding and Decoding"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"encodeNode(node): Uint8Array"})}),": Encodes an IPLD node into a byte array."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"decodeNode(encodedNode): any"})}),": Decodes a byte array back into an IPLD node."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"metadata-handling",children:"Metadata Handling"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createMetadataNode(metadata): any"})}),": Creates a metadata node for an IPLD DAG."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"createMetadataIPLDDag(metadata): IPLDDag"})}),": Creates an IPLD DAG for metadata."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"upload-and-download-operations",children:"Upload and Download Operations"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFile(api, file, options): PromisedObservable"})}),": Uploads a file with optional encryption and compression."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFileFromFilepath(api, filepath, options): PromisedObservable"})}),": Uploads a file from a filesystem path."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"uploadFolderFromFolderPath(api, folderPath, options): PromisedObservable"})}),": Uploads a folder from a filesystem path."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"downloadObject(api, params): AsyncIterable"})}),": Downloads an object by its CID."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.em,{children:"Note:"})," All asynchronous functions return a ",(0,o.jsx)(n.code,{children:"Promise"})," and should be used with ",(0,o.jsx)(n.code,{children:"await"})," for proper execution flow."]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"usage-examples",children:"Usage Examples"}),"\n",(0,o.jsx)(n.h3,{id:"1-creating-an-ipld-dag-from-a-file",children:"1. Creating an IPLD DAG from a File"}),"\n",(0,o.jsx)(n.p,{children:"Create an IPLD DAG for a file:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFileIPLDDag } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst fileBuffer = fs.readFileSync('path/to/your/file.txt');\n\nconst dag = createFileIPLDDag(fileBuffer, 'file.txt');\n\nconsole.log('File DAG created:', dag);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"2-creating-an-ipld-dag-from-a-folder",children:"2. Creating an IPLD DAG from a Folder"}),"\n",(0,o.jsx)(n.p,{children:"Create an IPLD DAG for a folder:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFolderIPLDDag } from '@autonomys/auto-drive';\nimport { CID } from 'multiformats';\n\n// Example child CIDs and folder information\nconst childCIDs: CID[] = [\n /* array of CIDs */\n];\nconst folderName = 'my-folder';\nconst folderSize = 1024; // size in bytes\n\nconst folderDag = createFolderIPLDDag(childCIDs, folderName, folderSize);\n\nconsole.log('Folder DAG created:', folderDag);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"3-working-with-cids",children:"3. Working with CIDs"}),"\n",(0,o.jsx)(n.p,{children:"Generate and manipulate CIDs:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { cidOfNode, cidToString, stringToCid } from '@autonomys/auto-drive';\n\n// Assuming you have an IPLD node\nconst node = { /* IPLD node data */ };\n\n// Create a CID from a node\nconst cid = cidOfNode(node);\n\n// Convert the CID to a string\nconst cidString = cidToString(cid);\nconsole.log('CID as string:', cidString);\n\n// Parse a string back into a CID\nconst parsedCID = stringToCid(cidString);\nconsole.log('Parsed CID:', parsedCID);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"4-encoding-and-decoding-nodes",children:"4. Encoding and Decoding Nodes"}),"\n",(0,o.jsx)(n.p,{children:"Encode and decode IPLD nodes:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { encodeNode, decodeNode } from '@autonomys/auto-drive';\n\n// Assume you have an IPLD node\nconst node = { /* IPLD node data */ };\n\n// Encode a node\nconst encodedNode = encodeNode(node);\n\n// Decode a node\nconst decodedNode = decodeNode(encodedNode);\n\nconsole.log('Decoded node:', decodedNode);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"5-handling-metadata",children:"5. Handling Metadata"}),"\n",(0,o.jsx)(n.p,{children:"Add metadata to a node:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createMetadataNode } from '@autonomys/auto-drive';\n\nconst metadata = {\n name: 'My File',\n description: 'This is a sample file',\n // ... other metadata fields\n};\n\nconst metadataNode = createMetadataNode(metadata);\n\nconsole.log('Metadata node created:', metadataNode);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"6-example-creating-a-file-dag-and-converting-to-cid",children:"6. Example: Creating a File DAG and Converting to CID"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { createFileIPLDDag, cidOfNode, cidToString } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst fileBuffer = fs.readFileSync('path/to/your/file.txt');\n\nconst dag = createFileIPLDDag(fileBuffer, 'file.txt');\n\n// Generate CID from the DAG\nconst cid = cidOfNode(dag.head);\n\n// Convert CID to string\nconst cidString = cidToString(cid);\n\nconsole.log(`CID of the file DAG: ${cidString}`);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"7-example-converting-metadata-to-dag",children:"7. Example: Converting Metadata to DAG"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import {\n createMetadataIPLDDag,\n cidOfNode,\n cidToString,\n type OffchainMetadata,\n} from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst metadataContent = fs.readFileSync('path/to/your/metadata.json', 'utf-8');\nconst metadata: OffchainMetadata = JSON.parse(metadataContent);\n\nconst dag = createMetadataIPLDDag(metadata);\n\nconst cid = cidOfNode(dag.head);\nconst cidString = cidToString(cid);\n\nconsole.log(`CID of the metadata DAG: ${cidString}`);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"8-uploading-a-file-from-filepath",children:"8. Uploading a File from Filepath"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFileFromFilepath, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst filePath = 'path/to/your/file.txt';\nconst options = {\n password: 'your-encryption-password', // Optional\n compression: true,\n};\n\nconst uploadObservable = uploadFileFromFilepath(api, filePath, options)\n .then(() => {\n console.log('File uploaded successfully!');\n })\n .catch((error) => {\n console.error('Error uploading file:', error);\n });\n"})}),"\n",(0,o.jsx)(n.h3,{id:"9-uploading-a-file-with-custom-interface",children:"9. Uploading a File with Custom Interface"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFile, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst buffer = Buffer.from(/* ... */);\nconst genericFile = {\n read: async function *() {\n yield buffer;\n },\n name: \"autonomys-whitepaper.pdf\",\n mimeType: \"application/pdf\",\n size: 1234556,\n path: \"autonomys-whitepaper.pdf\"\n};\n\nconst options = {\n password: 'your-encryption-password',\n compression: true,\n};\n\nconst uploadObservable = uploadFile(api, genericFile, options)\n .then(() => {\n console.log('File uploaded successfully!');\n })\n .catch((error) => {\n console.error('Error uploading file:', error);\n });\n"})}),"\n",(0,o.jsx)(n.h3,{id:"10-uploading-a-folder",children:"10. Uploading a Folder"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { uploadFolderFromFolderPath, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\nconst folderPath = 'path/to/your/folder';\n\nconst options = {\n uploadChunkSize: 1024 * 1024,\n password: 'your-encryption-password',\n};\n\nconst uploadObservable = uploadFolderFromFolderPath(api, folderPath, options);\n"})}),"\n",(0,o.jsx)(n.h3,{id:"11-tracking-upload-progress",children:"11. Tracking Upload Progress"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { useState, useEffect } from 'react';\nimport { uploadFile, createAutoDriveApi } from '@autonomys/auto-drive';\n\nconst UploadComponent = () => {\n const [progress, setProgress] = useState(0);\n\n useEffect(() => {\n const uploadFile = async () => {\n const api = createAutoDriveApi({ apiKey: 'your-api-key' });\n const finalStatus = await uploadFile(api, genericFile, options).forEach((status) => {\n setProgress(status.progress);\n });\n };\n uploadFile();\n }, []);\n\n return
Upload Progress: {progress}%
;\n};\n"})}),"\n",(0,o.jsx)(n.h3,{id:"12-downloading-a-file",children:"12. Downloading a File"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-typescript",children:"import { downloadObject, createAutoDriveApi } from '@autonomys/auto-drive';\nimport fs from 'fs';\n\nconst api = createAutoDriveApi({ apiKey: 'your-api-key' });\n\ntry {\n const stream = fs.createWriteStream('/path/to/file');\n const asyncBuffer = await downloadObject(api, { cid: 'your-cid' });\n for await (const buffer of asyncBuffer) {\n stream.write(buffer);\n }\n} catch (error) {\n console.error('Error downloading file:', error);\n}\n"})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"notes",children:"Notes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Asynchronous Functions"}),": Use ",(0,o.jsx)(n.code,{children:"await"})," with all promises for proper execution flow."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Error Handling"}),": Wrap asynchronous calls in ",(0,o.jsx)(n.code,{children:"try...catch"})," blocks to handle potential errors gracefully."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"File System Operations"}),": Ensure that file paths are correct and accessible when reading from or writing to the file system."]}),"\n"]}),"\n",(0,o.jsx)(n.hr,{})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},28453:(e,n,a)=>{a.d(n,{R:()=>t,x:()=>d});var o=a(96540);const i={},r=o.createContext(i);function t(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ff483d82.0c391f50.js b/assets/js/ff483d82.0c391f50.js deleted file mode 100644 index 1c70dce1f86..00000000000 --- a/assets/js/ff483d82.0c391f50.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3968],{52929:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>i});var t=n(74848),r=n(28453);const s={title:"Local Development",sidebar_position:3,description:"Guide on local development Autonomys Node and Farmer",slug:"/develop/nova/guides/local-development",keywords:["local development","autonomys network"]},a=void 0,l={id:"develop/nova/additional-guides/local_development",title:"Local Development",description:"Guide on local development Autonomys Node and Farmer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/local_development.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/nova/guides/local-development",permalink:"/develop/nova/guides/local-development",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/local_development.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Local Development",sidebar_position:3,description:"Guide on local development Autonomys Node and Farmer",slug:"/develop/nova/guides/local-development",keywords:["local development","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Hardhat",permalink:"/develop/nova/guides/hardhat"},next:{title:"Remix IDE",permalink:"/develop/nova/guides/remix"}},d={},i=[{value:"Setting up a local development environment",id:"setting-up-a-local-development-environment",level:3}];function c(e){const o={a:"a",admonition:"admonition",code:"code",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h3,{id:"setting-up-a-local-development-environment",children:"Setting up a local development environment"}),"\n",(0,t.jsx)(o.p,{children:(0,t.jsx)(o.strong,{children:"You can always set up a local network to test and deploy your smart contract!"})}),"\n",(0,t.jsx)(o.p,{children:"To establish a full local network, you need to run a local node, a Core-EVM domain, and a farmer."}),"\n",(0,t.jsxs)(o.p,{children:["First, visit the ",(0,t.jsx)(o.strong,{children:(0,t.jsx)(o.a,{href:"https://github.com/autonomys/subspace/releases",children:"Autonomys releases"})})," page and download the most up-to-date stable versions of the node and farmer."]}),"\n",(0,t.jsxs)(o.admonition,{type:"tip",children:[(0,t.jsx)(o.p,{children:"For each release, there are two versions:"}),(0,t.jsxs)(o.ol,{children:["\n",(0,t.jsx)(o.li,{children:"skylake: for newer processors from around 2015 and onwards"}),"\n",(0,t.jsx)(o.li,{children:"x86-64-v2: for older processors from around 2009 and some older VMs"}),"\n"]}),(0,t.jsxs)(o.p,{children:["Older processors/VMs are no longer supported by official releases, but they can still be ",(0,t.jsx)(o.a,{href:"https://github.com/autonomys/subspace/blob/main/docs/development.md",children:"compiled manually"})," if desired."]})]}),"\n",(0,t.jsx)(o.p,{children:"After downloading both files that suit your system, start a node using your preferred terminal. If you want to start an EVM domain on your local machine, you need to specify:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Your local RPC server port"}),"\n",(0,t.jsx)(o.li,{children:"Your local web-socket RPC port\nYou can do this with the following command:"}),"\n"]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:"./your_subspace_node_path run --dev --rpc-listen-on 127.0.0.1:9944 -- --domain-id 3 --dev --rpc-listen-on 127.0.0.1:8545\n"})}),"\n",(0,t.jsxs)(o.p,{children:["This will create a local RPC on port ",(0,t.jsx)(o.strong,{children:"8545"}),"."]}),"\n",(0,t.jsx)(o.p,{children:"Secondly, you need to start a farmer by running the following command:"}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:" ./your_subspace_farmer_path farm --reward-address [YOUR REWARD ADDRESS] path=tmp-farm,size=100M\n"})}),"\n",(0,t.jsx)(o.p,{children:"You can specify the desired plot size, but 100M should be sufficient."}),"\n",(0,t.jsxs)(o.p,{children:[(0,t.jsx)(o.strong,{children:"And that\u2019s it!"})," By starting your ",(0,t.jsx)(o.strong,{children:"local node"})," and a ",(0,t.jsx)(o.strong,{children:"farmer"}),", you have your ",(0,t.jsx)(o.strong,{children:"local RPC"})," ready for testing and deploying your smart contracts! You can easily connect your ",(0,t.jsx)(o.a,{href:"https://metamask.io/",children:"MetaMask"})," account to the local development network, as well as use ",(0,t.jsx)(o.a,{href:"https://remix.ethereum.org/",children:"Remix"})," or ",(0,t.jsx)(o.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})," in order to test and deploy smart contracts on a local network!"]})]})}function u(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,o,n)=>{n.d(o,{R:()=>a,x:()=>l});var t=n(96540);const r={},s=t.createContext(r);function a(e){const o=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ff483d82.c03ba933.js b/assets/js/ff483d82.c03ba933.js new file mode 100644 index 00000000000..6d16779f8eb --- /dev/null +++ b/assets/js/ff483d82.c03ba933.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3968],{52929:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>i});var t=n(74848),r=n(28453);const s={title:"Local Development",sidebar_position:3,description:"Guide on local development Autonomys Node and Farmer",slug:"/develop/auto-evm/guides/local-development",keywords:["local development","autonomys network"]},a=void 0,l={id:"develop/nova/additional-guides/local_development",title:"Local Development",description:"Guide on local development Autonomys Node and Farmer",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/local_development.md",sourceDirName:"develop/nova/additional-guides",slug:"/develop/auto-evm/guides/local-development",permalink:"/develop/auto-evm/guides/local-development",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/develop/nova/additional-guides/local_development.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Local Development",sidebar_position:3,description:"Guide on local development Autonomys Node and Farmer",slug:"/develop/auto-evm/guides/local-development",keywords:["local development","autonomys network"]},sidebar:"tutorialSidebar",previous:{title:"Hardhat",permalink:"/develop/auto-evm/guides/hardhat"},next:{title:"Remix IDE",permalink:"/develop/auto-evm/guides/remix"}},d={},i=[{value:"Setting up a local development environment",id:"setting-up-a-local-development-environment",level:3}];function c(e){const o={a:"a",admonition:"admonition",code:"code",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h3,{id:"setting-up-a-local-development-environment",children:"Setting up a local development environment"}),"\n",(0,t.jsx)(o.p,{children:(0,t.jsx)(o.strong,{children:"You can always set up a local network to test and deploy your smart contract!"})}),"\n",(0,t.jsx)(o.p,{children:"To establish a full local network, you need to run a local node, a Core-EVM domain, and a farmer."}),"\n",(0,t.jsxs)(o.p,{children:["First, visit the ",(0,t.jsx)(o.strong,{children:(0,t.jsx)(o.a,{href:"https://github.com/autonomys/subspace/releases",children:"Autonomys releases"})})," page and download the most up-to-date stable versions of the node and farmer."]}),"\n",(0,t.jsxs)(o.admonition,{type:"tip",children:[(0,t.jsx)(o.p,{children:"For each release, there are two versions:"}),(0,t.jsxs)(o.ol,{children:["\n",(0,t.jsx)(o.li,{children:"skylake: for newer processors from around 2015 and onwards"}),"\n",(0,t.jsx)(o.li,{children:"x86-64-v2: for older processors from around 2009 and some older VMs"}),"\n"]}),(0,t.jsxs)(o.p,{children:["Older processors/VMs are no longer supported by official releases, but they can still be ",(0,t.jsx)(o.a,{href:"https://github.com/autonomys/subspace/blob/main/docs/development.md",children:"compiled manually"})," if desired."]})]}),"\n",(0,t.jsx)(o.p,{children:"After downloading both files that suit your system, start a node using your preferred terminal. If you want to start an EVM domain on your local machine, you need to specify:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Your local RPC server port"}),"\n",(0,t.jsx)(o.li,{children:"Your local web-socket RPC port\nYou can do this with the following command:"}),"\n"]}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:"./your_subspace_node_path run --dev --rpc-listen-on 127.0.0.1:9944 -- --domain-id 3 --dev --rpc-listen-on 127.0.0.1:8545\n"})}),"\n",(0,t.jsxs)(o.p,{children:["This will create a local RPC on port ",(0,t.jsx)(o.strong,{children:"8545"}),"."]}),"\n",(0,t.jsx)(o.p,{children:"Secondly, you need to start a farmer by running the following command:"}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-bash",children:" ./your_subspace_farmer_path farm --reward-address [YOUR REWARD ADDRESS] path=tmp-farm,size=100M\n"})}),"\n",(0,t.jsx)(o.p,{children:"You can specify the desired plot size, but 100M should be sufficient."}),"\n",(0,t.jsxs)(o.p,{children:[(0,t.jsx)(o.strong,{children:"And that\u2019s it!"})," By starting your ",(0,t.jsx)(o.strong,{children:"local node"})," and a ",(0,t.jsx)(o.strong,{children:"farmer"}),", you have your ",(0,t.jsx)(o.strong,{children:"local RPC"})," ready for testing and deploying your smart contracts! You can easily connect your ",(0,t.jsx)(o.a,{href:"https://metamask.io/",children:"MetaMask"})," account to the local development network, as well as use ",(0,t.jsx)(o.a,{href:"https://remix.ethereum.org/",children:"Remix"})," or ",(0,t.jsx)(o.a,{href:"https://book.getfoundry.sh/",children:"Foundry"})," in order to test and deploy smart contracts on a local network!"]})]})}function u(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,o,n)=>{n.d(o,{R:()=>a,x:()=>l});var t=n(96540);const r={},s=t.createContext(r);function a(e){const o=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(s.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.069166ab.js b/assets/js/main.069166ab.js deleted file mode 100644 index affb065c52a..00000000000 --- a/assets/js/main.069166ab.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.069166ab.js.LICENSE.txt */ -(self.webpackChunkportal=self.webpackChunkportal||[]).push([[8792],{89188:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(96540);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"}))}},60463:(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(96540);var r=n(60463),a=n.n(r),o=n(84054);const i={"05f00ca8":[()=>Promise.all([n.e(1869),n.e(2408)]).then(n.bind(n,69584)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/port-config.mdx",69584],"060c9da0":[()=>n.e(4862).then(n.t.bind(n,66142,19)),"@generated/docusaurus-plugin-content-docs/default/p/farming-guides-28b.json",66142],"06683f66":[()=>n.e(9456).then(n.bind(n,76426)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-farming-cluster.mdx",76426],"0e5f0558":[()=>Promise.all([n.e(1869),n.e(5394),n.e(4849)]).then(n.bind(n,24909)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/register-operator.mdx",24909],"118c0595":[()=>n.e(8245).then(n.bind(n,95735)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-xdm.md",95735],"11bc8d76":[()=>Promise.all([n.e(1869),n.e(3547)]).then(n.bind(n,27807)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",27807],"14eb3368":[()=>Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,34136)),"@theme/DocCategoryGeneratedIndexPage",34136],17896441:[()=>Promise.all([n.e(1869),n.e(5394),n.e(6822),n.e(8401)]).then(n.bind(n,18632)),"@theme/DocItem",18632],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,87652)),"@theme/SearchPage",87652],"1a50bb86":[()=>Promise.all([n.e(1869),n.e(1868)]).then(n.bind(n,32944)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/intro.mdx",32944],"1df93b7f":[()=>n.e(4583).then(n.bind(n,36866)),"@site/src/pages/index.tsx",36866],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(5394),n.e(6822),n.e(6061)]).then(n.bind(n,67973)),"@theme/MDXPage",67973],"219356da":[()=>n.e(6832).then(n.bind(n,93566)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/space-acres/translate_space_acres.md",93566],"22ce8ab6":[()=>n.e(9942).then(n.bind(n,32697)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-utils.md",32697],"22dd74f7":[()=>n.e(1567).then(n.t.bind(n,55226,19)),"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",55226],"2f909f67":[()=>Promise.all([n.e(1869),n.e(5394),n.e(6308)]).then(n.bind(n,57316)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/deregister-operator.mdx",57316],"33b25d2b":[()=>n.e(7282).then(n.bind(n,24275)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/block_explorer.md",24275],"3451640b":[()=>n.e(3368).then(n.t.bind(n,18466,19)),"@generated/docusaurus-plugin-content-docs/default/p/develop-auto-sdk-bc7.json",18466],"393be207":[()=>n.e(4134).then(n.bind(n,40633)),"@site/src/pages/markdown-page.md",40633],"413a666c":[()=>Promise.all([n.e(1869),n.e(1995)]).then(n.bind(n,73425)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-tips.mdx",73425],"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,21504)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/security.md",21504],"45e84c8a":[()=>n.e(7755).then(n.bind(n,13726)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/intro.md",13726],"4905fc56":[()=>n.e(999).then(n.bind(n,24857)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/intro.md",24857],"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,56752)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/code-of-conduct.mdx",56752],"4d126344":[()=>n.e(4143).then(n.bind(n,28282)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/Resources/faucet.md",28282],"4ff06830":[()=>n.e(4476).then(n.t.bind(n,13018,19)),"@generated/docusaurus-plugin-content-docs/default/p/category-farming-b10.json",13018],"5419918d":[()=>n.e(9396).then(n.bind(n,31194)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/remix_guide.md",31194],"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,93660)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/wallets/polkadot.md",93660],"662ffd2e":[()=>n.e(7286).then(n.bind(n,32170)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/foundry_guide.md",32170],"66a8244a":[()=>n.e(4491).then(n.t.bind(n,75973,19)),"@generated/docusaurus-plugin-content-docs/default/p/develop-nova-0b3.json",75973],"737d42be":[()=>Promise.all([n.e(1869),n.e(5394),n.e(4865)]).then(n.bind(n,18612)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/space-acres/install.mdx",18612],78701537:[()=>n.e(4711).then(n.t.bind(n,91890,19)),"@generated/docusaurus-plugin-content-docs/default/p/wallets-30a.json",91890],"86d9053f":[()=>n.e(2750).then(n.bind(n,23134)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/staking.md",23134],"9bcb03d7":[()=>Promise.all([n.e(1869),n.e(5394),n.e(6385)]).then(n.bind(n,46722)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/taurus-network.mdx",46722],"9cc7ab88":[()=>n.e(5528).then(n.bind(n,39181)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/community/contributions.mdx",39181],"9dac239a":[()=>Promise.all([n.e(1869),n.e(1915)]).then(n.bind(n,57642)),"@site/i18n/en/docusaurus-plugin-content-docs/current/participate/contribute/translate.md",57642],a41ae2b1:[()=>Promise.all([n.e(1869),n.e(5394),n.e(112)]).then(n.bind(n,71088)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/staking/operators/tips-operator.mdx",71088],a5f8ae67:[()=>n.e(1400).then(n.bind(n,67413)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/intro.md",67413],a7456010:[()=>n.e(1235).then(n.t.bind(n,88552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",88552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,74532)),"@theme/DocVersionRoot",74532],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,14766)),"@theme/DocRoot",14766],a9921181:[()=>Promise.all([n.e(1869),n.e(5394),n.e(8515)]).then(n.bind(n,74537)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/advanced-cli/cli-install.mdx",74537],aa9e0a32:[()=>n.e(9033).then(n.bind(n,88091)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/wallets/subwallet.md",88091],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,27093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",27093],b23e3acb:[()=>n.e(3372).then(n.bind(n,60373)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/hardhat_guide.md",60373],b8c29134:[()=>n.e(6285).then(n.bind(n,41553)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/grafana-dashboard.md",41553],c0701f9f:[()=>n.e(8215).then(n.bind(n,5982)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/intro.md",5982],c141421f:[()=>n.e(957).then(n.t.bind(n,40936,19)),"@generated/docusaurus-theme-search-algolia/default/__plugin.json",40936],c15330b1:[()=>n.e(9493).then(n.bind(n,99742)),"@site/i18n/en/docusaurus-plugin-content-docs/current/learn/academy.mdx",99742],c435babb:[()=>n.e(8649).then(n.bind(n,29263)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-id.md",29263],db294877:[()=>n.e(1608).then(n.bind(n,59241)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/general-information.md",59241],def50d34:[()=>n.e(1488).then(n.bind(n,13014)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/intro.md",13014],e14761ab:[()=>Promise.all([n.e(1869),n.e(2788)]).then(n.bind(n,83405)),"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/timekeeping.md",83405],ea18547f:[()=>n.e(3586).then(n.bind(n,91530)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/setting-up-metamask.md",91530],ec9608a6:[()=>n.e(6783).then(n.bind(n,69312)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/intro.mdx",69312],ee76913c:[()=>n.e(8578).then(n.bind(n,67928)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-drive.md",67928],fa362710:[()=>n.e(6765).then(n.bind(n,34683)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/auto_sdk/auto-consensus.md",34683],ff483d82:[()=>n.e(3968).then(n.bind(n,52929)),"@site/i18n/en/docusaurus-plugin-content-docs/current/develop/nova/additional-guides/local_development.md",52929]};var l=n(74848);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(86921),u=n(53102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,82237)),modules:["@theme/NotFound"],webpack:()=>[82237],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:"/search",component:d("/search","5de"),exact:!0},{path:"/",component:d("/","e5f"),exact:!0},{path:"/",component:d("/","9cf"),routes:[{path:"/",component:d("/","6c8"),routes:[{path:"/",component:d("/","56a"),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/contributions",component:d("/participate/community/contributions","006"),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(96540),a=n(74848);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})}},38536:(e,t,n)=>{"use strict";var r=n(96540),a=n(5338),o=n(80545),i=n(54625),l=n(4784),s=n(38193);const c=[n(31911),n(10119),n(26134),n(76294),n(51043)];var u=n(35947),d=n(56347),p=n(22831),f=n(74848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(44586),b=n(86025),y=n(6342),v=n(69024),w=n(32131),k=n(14090),x=n(2967),S=n(70440),_=n(41463);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(26988),j=n(205);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,j.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),N("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const M=I,F="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container";function z(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

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

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(M,{location:e,children:G})}function Y(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(P.l,{children:(0,f.jsxs)(L.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(V,{}),(0,f.jsx)(T,{}),(0,f.jsx)(U,{}),(0,f.jsx)(K,{})]}),(0,f.jsx)(q,{})]})})})}var Q=n(84054);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(86921);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)}))}},26988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(96540),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/contributions","path":"/participate/community/contributions","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":["de","en","fr","id","it","ja","uk","pt","ru","vi","es","zh","tr"],"path":"i18n","currentLocale":"en","localeConfigs":{"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"},"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"},"zh":{"label":"\u4e2d\u6587","direction":"ltr","htmlLang":"zh","calendar":"gregory","path":"zh"},"tr":{"label":"T\xfcrk\xe7e","direction":"ltr","htmlLang":"tr","calendar":"gregory","path":"tr"}}}');var l=n(22654);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"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.5.2"}}}');var c=n(74848);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})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(96540),a=n(38193),o=n(5260),i=n(70440),l=n(73932),s=n(53102),c=n(74848);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}}},38193:(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(96540);var r=n(80545),a=n(74848);function o(e){return(0,a.jsx)(r.mg,{...e})}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(96540),a=n(54625),o=n(70440),i=n(44586),l=n(16654),s=n(38193),c=n(63427),u=n(86025),d=n(74848);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)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(96540),a=n(74848);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(22654);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)})}},17065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},16654:(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})},86025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(96540),a=n(44586),o=n(16654);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)}},63427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(96540);n(74848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},44586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(26988);function o(){return(0,r.useContext)(a.o)}},92303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),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(96540);const a=n(38193).A.canUseDOM?r.useLayoutEffect:r.useEffect},86921:(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}},53102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(96540),a=n(74848);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})}},53886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>h,XK:()=>v,g1:()=>y});var r=n(96540),a=n(44070),o=n(17065),i=n(6342),l=n(70679),s=n(89532),c=n(74848);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)])))}},82565:(e,t,n)=>{"use strict";n.d(t,{k:()=>o,v:()=>i});var r=n(44070),a=n(53886);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)}))]}},60609:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(96540),a=n(89532),o=n(74848);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}},26972:(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(96540),a=n(56347),o=n(22831),i=n(44070),l=n(99169),s=n(31682),c=n(53886),u=n(23025),d=n(60609);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)))}},23025:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(96540),a=n(89532),o=n(74848);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}},44070:(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(56347),a=n(44586),o=n(17065);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)}},31911:(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")}))}}},64653:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(44586);function a(){const{siteConfig:{themeConfig:e}}=(0,r.A)();return e}},32401:(e,t,n)=>{"use strict";n.d(t,{C:()=>l});var r=n(96540),a=n(91252),o=n(86025),i=n(64653);function l(){const{withBaseUrl:e}=(0,o.hH)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.c)();return(0,r.useCallback)((r=>{const o=new URL(r);if((0,a.G)(t,o.href))return r;const i=`${o.pathname+o.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},76294:(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()}}},26134:(e,t,n)=>{"use strict";n.r(t);var r=n(84876),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(19700),n(97521)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},51107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(96540);var r=n(18215),a=n(21312),o=n(6342),i=n(28774),l=n(63427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(74848);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"})]})}},43186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(74848);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"})})}},73932:(e,t,n)=>{"use strict";n.d(t,{A:()=>jt});var r=n(96540),a=n(18215),o=n(67489),i=n(69024),l=n(56347),s=n(21312),c=n(75062),u=n(74848);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(17559),b=n(14090);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:y.skipToContent})}var w=n(6342),k=n(65041);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(22069),P=n(23104);var j=n(89532),N=n(75600);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(95293),B=n(92303);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(23465);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(28774),X=n(86025),J=n(16654),ee=n(91252),te=n(43186);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?(0,ee.G)(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(41422),le=n(99169),se=n(44586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!(0,ee.G)(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(32131);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(40961);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(89188),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),Le=n(24255),Pe=n(32401),je=n(2967),Ne=n(82565);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 r=(0,Le.w)();return(0,u.jsx)(Z.A,{to:r(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=(0,Pe.C)(),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,58913)),Promise.all([n.e(1869),n.e(5049)]).then(n.bind(n,75049))]).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;(0,ee.G)(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(44070),Ve=n(26972);var He=n(53886);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(12181);const nt="right";function rt(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 at(){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)(rt,{})})}const ot={colorModeToggle:"colorModeToggle_DEke"};function it(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(tt.k2,{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 lt(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 st(){const e=(0,L.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??nt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,u.jsx)(lt,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(at,{}),(0,u.jsx)(K,{}),(0,u.jsx)(it,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(it,{items:r}),(0,u.jsx)(q,{className:ot.colorModeToggle}),!a&&(0,u.jsx)($e,{children:(0,u.jsx)(Be,{})})]})})}function ct(){return(0,u.jsx)(et,{children:(0,u.jsx)(st,{})})}function ut(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 dt(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)(ut,{item:t})},t.href??t.to)}function pt(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)(dt,{item:e},t)))})]})}function ft(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(pt,{column:e},t)))})}function mt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function gt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(ut,{item:t})}function ht(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)(gt,{item:e}),t.length!==n+1&&(0,u.jsx)(mt,{})]},n)))})})}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(ft,{columns:t}):(0,u.jsx)(ht,{links:t})}var yt=n(21122);const vt={footerLogoLink:"footerLogoLink_BH7S"};function wt(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)(yt.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function kt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:vt.footerLogoLink,target:t.target,children:(0,u.jsx)(wt,{logo:t})}):(0,u.jsx)(wt,{logo:t})}function xt(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function St(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 _t(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,u.jsx)(St,{style:a,links:n&&n.length>0&&(0,u.jsx)(bt,{links:n}),logo:r&&(0,u.jsx)(kt,{logo:r}),copyright:t&&(0,u.jsx)(xt,{copyright:t})})}const Et=r.memo(_t),Ct=(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 Tt(e){let{children:t}=e;return(0,u.jsx)(Ct,{children:t})}var At=n(51107);function Lt(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)(At.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)(tt.a2,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(tt.bq,{error:t})})]})})})}const Pt={mainWrapper:"mainWrapper_z2l0"};function jt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,b.J)(),(0,u.jsxs)(Tt,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(A,{}),(0,u.jsx)(ct,{}),(0,u.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,Pt.mainWrapper,r),children:(0,u.jsx)(o.A,{fallback:e=>(0,u.jsx)(Lt,{...e}),children:t})}),!n&&(0,u.jsx)(Et,{})]})}},23465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(96540);var r=n(28774),a=n(86025),o=n(44586),i=n(6342),l=n(21122),s=n(74848);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})]})}},41463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(5260),a=n(74848);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})]})}},21122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(96540),a=n(15066),o=n(92303),i=n(95293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(74848);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})}})}},41422:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>c});var r=n(96540),a=n(38193),o=n(205),i=n(53109),l=n(74848);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})}},65041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(96540),a=n(92303),o=n(70679),i=n(89532),l=n(6342),s=n(74848);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}},95293:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>h});var r=n(96540),a=n(38193),o=n(89532),i=n(70679),l=n(6342),s=n(74848);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}},22069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(96540),a=n(75600),o=n(24581),i=n(57485),l=n(6342),s=n(89532),c=n(74848);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}},75600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(96540),a=n(89532),o=n(74848);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}},14090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(96540);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)}}),[])}},24255:(e,t,n)=>{"use strict";n.d(t,{b:()=>l,w:()=>s});var r=n(96540),a=n(44586),o=n(57485);const i="q";function l(){return(0,o.l)(i)}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},24581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(96540),a=n(38193);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}},17559:(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"}}},53109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},12181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>u,MN:()=>c,a2:()=>s,k2:()=>d});var r=n(96540),a=n(21312),o=n(70440);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var l=n(74848);function s(e){return(0,l.jsx)("button",{type:"button",...e,children:(0,l.jsx)(a.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 c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,l.jsx)("p",{children:t.message}),(0,l.jsx)(s,{onClick:n})]})}function u(e){let{error:t}=e;const n=(0,o.rA)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{className:i.errorBoundaryError,children:n})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},20481:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(44586);function a(e){const{siteConfig:t}=(0,r.A)(),{title:n,titleDelimiter:a}=t;return e?.trim().length?`${e.trim()} ${a} ${n}`:n}},57485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>s,l:()=>c});var r=n(96540),a=n(56347),o=n(89532);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)))}function c(e){const t=s(e)??"",n=function(e){const t=(0,a.W6)();return(0,r.useCallback)(((n,r)=>{const a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(r?.push?t.push:t.replace)({search:a.toString()})}),[e,t])}(e);return[t,n]}},31682:(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})},69024:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(96540),a=n(15066),o=n(5260),i=n(53102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(86025),c=n(20481),u=n(74848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=(0,c.s)(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})}},89532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(96540),a=n(205),o=n(74848);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)})}}},91252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},99169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(96540),a=n(35947),o=n(44586);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])}},23104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>g});var r=n(96540),a=n(38193),o=n(92303),i=n(205),l=n(89532),s=n(74848);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"},70679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(96540);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]}},32131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(44586),a=n(56347),o=n(70440);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}`}}}},75062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(96540),a=n(56347),o=n(89532);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(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},12983:(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(42566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},80253:(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]}},70440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(31635);var a=n(12983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(42566);var i=n(80253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},42566:(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}},31513:(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(11561);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(44363),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}}},64634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},10119:(e,t,n)=>{"use strict";n.r(t)},51043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},70824:()=>{Prism.languages.ini={comment:{pattern:/(^[ \f\t\v]*)[#;][^\n\r]*/m,lookbehind:!0},section:{pattern:/(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,lookbehind:!0,inside:{"section-name":{pattern:/(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,lookbehind:!0,alias:"selector"},punctuation:/\[|\]/}},key:{pattern:/(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,lookbehind:!0,alias:"attr-name"},value:{pattern:/(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,lookbehind:!0,alias:"attr-value",inside:{"inner-value":{pattern:/^("|').+(?=\1$)/,lookbehind:!0}}},punctuation:/=/}},19700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];g&&y.push.apply(y,i([g])),y.push(h),b&&y.push.apply(y,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},30905:()=>{!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}}(Prism)},60061:()=>{!function(e){var t=[/"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/.source,/'[^']*'/.source,/\$'(?:[^'\\]|\\[\s\S])*'/.source,/<<-?\s*(["']?)(\w+)\1\s[\s\S]*?[\r\n]\2/.source].join("|");e.languages["shell-session"]={command:{pattern:RegExp(/^/.source+"(?:"+/[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+(?::[^\0-\x1F$#%*?"<>:;|]+)?/.source+"|"+/[/~.][^\0-\x1F$#%*?"<>@:;|]*/.source+")?"+/[$#%](?=\s)/.source+/(?:[^\\\r\n \t'"<$]|[ \t](?:(?!#)|#.*$)|\\(?:[^\r]|\r\n?)|\$(?!')|<(?!<)|<>)+/.source.replace(/<>/g,(function(){return t})),"m"),greedy:!0,inside:{info:{pattern:/^[^#$%]+/,alias:"punctuation",inside:{user:/^[^\s@:$#%*!/\\]+@[^\r\n@:$#%*!/\\]+/,punctuation:/:/,path:/[\s\S]+/}},bash:{pattern:/(^[$#%]\s*)\S[\s\S]*/,lookbehind:!0,alias:"language-bash",inside:e.languages.bash},"shell-symbol":{pattern:/^[$#%]/,alias:"important"}}},output:/.(?:.*(?:[\r\n]|.$))*/},e.languages["sh-session"]=e.languages.shellsession=e.languages["shell-session"]}(Prism)},70132:()=>{!function(e){var t=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function n(e){return e.replace(/__/g,(function(){return t}))}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(n(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}}(Prism)},97521:(e,t,n)=>{var r={"./prism-ini":70824,"./prism-powershell":30905,"./prism-shell-session":60061,"./prism-toml":70132};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=97521},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},22551:(e,t,n)=>{"use strict";var r=n(96540),a=n(69982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n