From fe8a65dd05c5cabbbaca7517dde5f209c5755518 Mon Sep 17 00:00:00 2001 From: Barrie Byron Date: Thu, 22 Jun 2023 14:01:03 -0400 Subject: [PATCH 1/7] replace ClientSDK with Mina Signer client-sdk.mdx --- docs/node-operators/client-sdk.mdx | 145 +---------------------------- 1 file changed, 4 insertions(+), 141 deletions(-) diff --git a/docs/node-operators/client-sdk.mdx b/docs/node-operators/client-sdk.mdx index cb886811d..ea16834ef 100644 --- a/docs/node-operators/client-sdk.mdx +++ b/docs/node-operators/client-sdk.mdx @@ -1,5 +1,5 @@ --- -title: Client SDK +title: Mina Signer hide_title: true --- @@ -9,145 +9,8 @@ A new version of Mina Docs is coming soon! This page will be rewritten. ::: -# Client SDK +# Mina Signer -This is a NodeJS client SDK that allows you to generate Mina key pairs and sign transactions and strings using Mina's key pairs. -The project contains Typescript and ReasonML typings but can be used from plain NodeJS as well. +The Mina Signer is a NodeJS SDK that allows you to sign strings, payments, and delegations using Mina's key pairs for various specified networks. -
- -:::caution - -Please be advised that generating key pairs with this method is unadvised and should only be used by experienced security professionals. -Please use our [mina-generate-keypair](generating-a-keypair#mina-generate-keypair) tool instead for creating key pairs. - -Never reuse the same keypair from a testnet on mainnet! - -::: - - -## Installation - -The source code for our client SDK is open source and be seen [here](https://github.com/MinaProtocol/mina/tree/develop/frontend/client_sdk). - -To get the client SDK installed, you will need NodeJS on your system. Make sure it is available on your machine and then use either yarn or npm to install the client SDK. - -```bash -# yarn: -yarn add @o1labs/client-sdk - -# npm: -npm install --save @o1labs/client-sdk -``` - -## Usage - -Creating a key pair is simple with our client SDK. See the snippet below to see how to get create a key pair. - -### NodeJS: - -```javascript -const MinaSDK = require("@o1labs/client-sdk"); - -let keys = MinaSDK.genKeys(); -console.log(`Public key: ${keys.publicKey}`); -console.log(`Private key: ${keys.privateKey}`); -``` - -This will print your private key so make sure you are in a secure environment when using this method. - -Please see the [client SDK readme](https://github.com/MinaProtocol/mina/blob/develop/frontend/client_sdk/README.md) for more information on how to use our SDK. - -
- -:::caution - -Never give out your private key and make sure they are stored safely. If you lose your private key or if a malicious actor gains access to your private key, you will lose access to your account and will lose your account funds. Always give out your public keys instead. Mina will never ask you for your private keys. - -::: - -
- -## Import your account generated from the SDK - -Please note that there are differences in key pair format between what the Mina client expects and what the client SDK generates. -When the client SDK is used to generate a key pair, the key pair output returned are strings that aren't directly importable into our Mina client. -For this, we will have to use the `mina advanced wrap-key` tool to format our key pair strings into a format that is directly importable to our client. - -Accomplishing this takes only a few short steps. - -1. First, make sure you have a folder on your system where you can store the key files. We recommend using the ~/keys folder. - -``` -mkdir ~/keys -``` - -2. Next, ensure the permissions are set properly in this folder, this prevents unwanted processes from accessing these files. - -``` -chmod 700 ~/keys -``` - -3. Copy the private key output into a file in the ~/keys folder. - -``` -echo 'YOUR-PRIVATE_KEY' > ~/keys/my-wallet -``` - -4. Ensure the permissions are set properly for the private key file, this prevents unwanted processes from accessing it. - -``` -chmod 600 ~/keys/my-wallet -``` - -5. Use the `mina advanced wrap-key` tool to format your key pair into an importable format for the Mina client. Please note that using `mina advanced wrap-key` will force you to reset your password on your private key. - -``` -mina advanced wrap-key --privkey-path ~/keys/my-wallet -``` - -You will be prompted for a new password, as shown below. - -``` -Private key: -Password for new private key file: -Again to confirm: -``` - -This will generate a new `my-wallet.pub` and `my-wallet` file. - -``` -ls ~/keys/ -my-wallet my-wallet.pub -``` - -6. Ensure the permissions are set properly for the newley created private key file. - -``` -chmod 600 ~/keys/my-wallet -``` - -7. Finally, we can import the account created by the client SDK into the client. - -``` -mina accounts import --privkey-path ~/keys/my-wallet -``` - -You will be prompted for the password you entered when the account was created with `mina advanced wrap-key`. - -The response from this command will look like this: - -``` -πŸ˜„ Imported account! -Public key: B62qjaA4N9843FKM5FZk1HmeuDiojG42cbCDyZeUDQVjycULte9PFkC -``` - -## Validate your private key - -Now that you've created your key -- you'll want to validate that it works. It's sufficient to verify that you can sign a transaction. You can verify this using the `mina-validate-keypair` tool. - -Run the following command: - -``` -mina-validate-keypair --privkey-path ~/keys/my-wallet -``` +See [MinaSigner](https://github.com/o1-labs/snarkyjs/tree/main/src/mina-signer). From d59aecb497b16dafa4728f9133d7f4562319dd6a Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 14:05:57 -0400 Subject: [PATCH 2/7] change sidebar to grab new mina signer topic --- sidebars.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sidebars.js b/sidebars.js index 768f446bd..ffcbc1335 100644 --- a/sidebars.js +++ b/sidebars.js @@ -344,7 +344,7 @@ module.exports = { 'node-operators/delegation-tiebreak', 'node-operators/bp-sidecar', 'node-operators/uptime-tracking-system', - 'node-operators/client-sdk', + 'node-operators/mina-signer', 'node-operators/querying-data', 'node-operators/connecting-to-devnet', 'node-operators/hardforks', From 99b720009531cf4fcf9b41cd6050bd6a2aee7401 Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 14:08:05 -0400 Subject: [PATCH 3/7] rename file for mina signer --- docs/node-operators/{client-sdk.mdx => mina-signer.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/node-operators/{client-sdk.mdx => mina-signer.mdx} (100%) diff --git a/docs/node-operators/client-sdk.mdx b/docs/node-operators/mina-signer.mdx similarity index 100% rename from docs/node-operators/client-sdk.mdx rename to docs/node-operators/mina-signer.mdx From f37acf616b77e4f31567072422fc6615b80c0448 Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 14:57:36 -0400 Subject: [PATCH 4/7] clean up while updating for Mina Signer --- docs/node-operators/faq.mdx | 117 ++++++++++++++---------- docs/node-operators/getting-started.mdx | 22 ++--- 2 files changed, 78 insertions(+), 61 deletions(-) diff --git a/docs/node-operators/faq.mdx b/docs/node-operators/faq.mdx index 14ef5f84f..b1e807289 100644 --- a/docs/node-operators/faq.mdx +++ b/docs/node-operators/faq.mdx @@ -16,36 +16,44 @@ A new version of Mina Docs is coming soon! This page will be rewritten. #### Do I need any specific hardware? -Currently, a 8-core processor and 16 GB of RAM are the minimum requirements. +An 8-core processor and 16 GB of RAM are the minimum requirements. #### What about software? -You can download all the software required to run a Mina node [here](/getting-started#installation). Right now, we have builds that work on macOS, as well as Debian 9 and Ubuntu 18.04. You can also [build from source](https://github.com/minaprotocol/mina) or run via [Docker](connecting-to-the-network#docker) for other unsupported systems. +For instructions to download the required software to run a Mina node, see [Getting Started](/getting-started#installation). #### What can I do on the Mina network? -Any node can send and receive transactions on the Mina network. Additionally, any node can choose to be a "Node operator". Node operators play two specific roles: +Any node can send and receive transactions on the Mina network. Any node can also choose to be a node operator. See [Getting Started](/node-operators/getting-started) in the Node Operators documentation. -1. Block Producer - this is analogous to being a Bitcoin "miner" or a "validator" in other proof-of-stake networks. By staking mina, you can be selected to produce a block and win the block reward +Node operators play two specific roles: -2. Snark Worker - this job is what helps compress data in Mina's network. The snark worker nodes generate proofs of transactions, and the block producer buys these proofs on the network (we call it a "snarketplace" :)) - thus, the snark worker gets rewarded a bit of the block reward for their efforts. +1. Block Producer - this is analogous to being a Bitcoin "miner" or a "validator" in other proof-of-stake networks. By staking MINA, you can be selected to produce a block and win the block reward. -#### What is the point of a testnet? +2. SNARK worker - this job is what helps compress data in Mina's network. The SNARK worker nodes generate proofs of transactions. The block producer buys these proofs on the network (think of this as a "snarketplace"). For their efforts, the SNARK worker gets rewarded a part of the block reward. -The Mina testnet's goal is to improve Mina's stability, improve the software through bug fixes and addressing user experience, and to test the economic incentive design in Mina. By participating in the testnet, you get to be the first participants in the Mina protocol, and help develop it from ground zero. +#### What is the purpose of a Testnet? + +The goal of the Mina Testnet is to improve the Mina network stability, improve the software with bug fixes and addressing user experience, and to test the economic incentive design in Mina. By participating in the Testnet, you get to be the first participants in the Mina protocol and help develop it from ground zero. #### Where can I try out Devnet? -Head over to the [Docker](connecting-to-the-network#docker) [Devnet page](connecting-to-devnet) to learn more and get started. +See [Connect to Devnet](/node-operators/connecting-to-devnet) [Devnet page](connecting-to-devnet) to learn more and get started. + +#### What is Mina Signer? + +The [Mina Signer](https://github.com/o1-labs/snarkyjs/blob/main/src/mina-signer/README.md) NodeJS SDK allows you to sign strings, payments, and delegations using Mina's key pairs for various specified networks. + +The Mina Signer supersedes the deprecated Client SDK. #### My daemon crashed -- where should I share the error log? -First, check out existing [GitHub issues](https://github.com/minaprotocol/mina/issues) to see if this is a known issue. If the error you experienced is a new issue, file a GitHub issue with the appropriate tags (daemon, bug). Mina developers will triage the issue and fix it in a future sprint -- thanks for your help! +First, check out existing [GitHub issues](https://github.com/minaprotocol/mina/issues) to see if this is a known issue. If the error you experienced is a new issue, file a GitHub issue with the appropriate tags (daemon, bug). Mina developers help triage the issue and fix it in a future sprint -- thanks for your help! #### How can I report other issues / get in touch with the development team? -- The Mina community's live discussion takes place in the [Mina Protocol Discord](https://discord.gg/minaprotocol) -- You can also create GitHub issues: https://github.com/minaprotocol/mina/issues +- The Mina community's live discussion takes place in the [Mina Protocol Discord](https://discord.gg/minaprotocol) server. +- You can also create GitHub issues: https://github.com/minaprotocol/mina/issues. - If you need to get in touch, you can submit a ticket by using the [Mina Support chat](https://support.minaprotocol.com/). #### Is there a block explorer? @@ -68,7 +76,7 @@ Mina achieves scalability through the use of recursive proof-of-work is deterministic, while PoW mining requires randomly calculating hashes to try and solve a puzzle. There is no luck element in SNARK work β€” if a snark worker wants to generate a SNARK of a transaction, they only need to generate the proof once. This means SNARK work is much less expensive and environmentally wasteful, as the compute is all spent towards a productive goal. -- There is no difficulty increase for SNARK work, as there is with PoW mining. In fact, as SNARK constructions, and proof generation times improve, the difficulty may actually decrease. -- SNARK work is not directly involved in consensus. Snark workers play no role in determining the next state of the blockchain. Their role is to simply generate SNARKs of transactions observed in the network -- As a snark worker, there is no requirement for uptime. PoW miners need to run their rigs non-stop to ensure they don't miss out on a potential block. Snark workers can come online and offline as they please β€” it is more like Uber, where there will always be work to be done, and nobody needs to say ahead of time when they want to work. +- SNARK proof-of-work is deterministic, while PoW mining requires randomly calculating hashes to try and solve a puzzle. There is no luck element in SNARK work β€” if a SNARK worker wants to generate a SNARK of a transaction, they only need to generate the proof once. This means SNARK work is much less expensive and less environmentally wasteful, as the compute is all spent towards a productive goal. +- There is no difficulty increase for SNARK work, as there is with PoW mining. In fact, as SNARK constructions, and proof generation times improve, the difficulty can actually decrease. +- SNARK work is not directly involved in consensus. SNARK workers play no role in determining the next state of the blockchain. Their role is to simply generate SNARKs of transactions observed in the network +- As a SNARK worker, there is no requirement for uptime. PoW miners need to run their rigs non-stop to ensure they don't miss out on a potential block. SNARK workers can come online and offline as they please β€” it is more like Uber, where there is always be work to be done, and nobody needs to say ahead of time when they want to work. #### Why have my SNARKs not been included? (A.K.A. How should I price my SNARKs?) -Even though your SNARK Worker might be producing SNARKs at a breakneck pace, if someone else produces a cheaper proof for a particular job you have already completed, their SNARK would be preferred due to its lower fee. +Even though your SNARK worker might be producing SNARKs at a breakneck pace, if someone else produces a cheaper proof for a particular job you have already completed, their SNARK is preferred due to its lower fee. -Pricing your SNARKs is a delicate balance between the cost of compute, the market environment (demand for SNARKs), your SNARK throughput, and the speed at which each of your SNARK Worker processes can produce SNARKs. Sometimes, it might even be economically prudent to turn off your SNARK Worker altogether until the market improves. +Pricing your SNARKs is a delicate balance between the cost of compute, the market environment (demand for SNARKs), your SNARK throughput, and the speed at which each of your SNARK worker processes can produce SNARKs. Sometimes, it might even be economically prudent to turn off your SNARK worker altogether until the market improves. -#### Will Snark Workers require more storage and computing power over time? What about compared to Mina full nodes? +#### Will Snark workers require more storage and computing power over time? What about compared to Mina full nodes? -Snark workers will not need more storage or computing power over time. Snark workers simply query the mempool for pending transactions requiring Snark proofs, and then generate said proof -- this does not require syncing historical data. In addition, the underlying proving cost of Snark work doesn’t get more expensive with time. +SNARK workers will not need more storage or computing power over time. SNARK workers simply query the mempool for pending transactions requiring SNARK proofs, and then generate said proof -- this does not require syncing historical data. In addition, the underlying proving cost of SNARK work doesn't get more expensive with time. -If we are comparing Snark worker nodes with full nodes on Mina, then yes Snark workers will benefit from specialized hardware as generating SNARK proofs is currently compute intensive. Again, however, with the explosion of SNARK research, this is likely to change and become more accessible to consumer hardware. +If we are comparing SNARK worker nodes with full nodes on Mina, then yes SNARK workers benefit from specialized hardware as generating SNARK proofs can be compute intensive. Again, however, with the explosion of SNARK research, this is likely to change and become more accessible to consumer hardware. -#### What is the difference between a SNARK, a SNARK proof, and snark work? +#### What is the difference between a SNARK, a SNARK proof, and SNARK work? -SNARKs are a very overloaded term currently β€” when you read **SNARK**, it could be referring to the concept of succinct non-interactive proof systems (eg. SNARKs vs Bulletproofs), the specific technical implementation of the proof system (eg. the construction, the circuit, or the prover), or the individual instance of the proof itself (eg. the blockchain SNARK). +SNARKs are a very overloaded term. When you read **SNARK**, it could be referring to the concept of succinct non-interactive proof systems (for example, SNARKs vs Bulletproofs), the specific technical implementation of the proof system (for example, the construction, the circuit, or the prover), or the individual instance of the proof itself (for example, the blockchain SNARK). -When we speak about it, we will try to adhere to using: +The general terminology is: - SNARK: as the general concept of succinct, non-interactive zero-knowledge proofs - SNARK circuit: the specific circuit and prover, as pertaining to an app - SNARK proof: an individual proof that is generated by a SNARK prover -- snark work: a Mina protocol data structure that is a wrapper around one or two SNARK proofs and a price to be paid to the snark worker that generated the proof(s). This is made unforgeable by a Signature of Knowledge scheme that will be detailed in another section. +- SNARK work: a Mina protocol data structure that is a wrapper around one or two SNARK proofs and a price to be paid to the SNARK worker that generated the proof or proofs. -#### Is there any concern about a single large snark worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? +#### Is there any concern about a single large SNARK worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? -In economics, there is a pricing strategy called predatory pricing (or dumping) where one supplier of a product seeks to exhaust competing suppliers in the market by undercutting the market price. The supplier prices their goods much cheaper than the market rate, in order to drive out competitors, even if it means incurring short-term losses. Once the market has been cleared, the dominant supplier then increases prices [above competitive market rates](https://en.wikipedia.org/wiki/Supracompetitive_pricing), as competition has been extinguished. +In economics, there is a pricing strategy called predatory pricing (or dumping) where one supplier of a product seeks to exhaust competing suppliers in the market by undercutting the market price. The supplier prices their goods much cheaper than the market rate in order to drive out competitors, even if it means incurring short-term losses. After the market has been cleared, the dominant supplier then increases prices [above competitive market rates](https://en.wikipedia.org/wiki/Supracompetitive_pricing), as competition has been extinguished. -However, this strategy is only effective in markets where there are high barriers to entry. Meaning, competitors who were crowded out in the predation stage are unable to rejoin the market. +However, this strategy is effective only in markets where there are high barriers to entry. Meaning, competitors who were crowded out in the predation stage are unable to rejoin the market. -This is not the case for snark work, as the barriers to entry are low. Anyone who has spare compute can join the snarketplace and produce as little as one snark work, and profit on that unit of work. The only barrier to entry is the initial capital expense on hardware, but we anticipate hardware requirements to be low, such that users with spare equipment can come online and participate. If any snark worker succeeds in driving out the market and increases prices, it is anticipated that newcomers would reappear and drive prices back down. +This is not the case for SNARK work because the barriers to entry are low. Anyone who has spare compute can join the snarketplace and produce as little as one SNARK work and profit on that unit of work. The only barrier to entry is the initial capital expense on hardware, but hardware requirements are low so that users with spare equipment can come online and participate. If any SNARK worker succeeds in driving out the market and increases prices, newcomers are anticipated to reappear and drive prices back down. -#### Does speed of producing snarks matter? If my computer is slower, will I be at a disadvantage? +#### Does speed of producing SNARKs matter? If my computer is slower, will I be at a disadvantage? -No, provided that the snark work produced is still required by block producers, it doesn't matter who produced it first β€” only the price matters in the block producers' eyes. The caveat here is that earlier inclusion into the snark mempool is obviously beneficial, as block producers are likely to "see" the work earlier. +No, provided that the SNARK work produced is still required by block producers, it doesn't matter who produced it first β€” only the price matters to block producers. The caveat here is that earlier inclusion into the SNARK mempool is obviously beneficial, as block producers are likely to "see" the work earlier. -One could however envision a scenario where a set of snark workers are favored because they produced the most number of snark works that are profitable, and buying proofs from as few entities as possible would allow for more transactions to be included in any block. +However, you can envision a scenario where a set of SNARK workers are favored because they produced the most number of SNARK works that are profitable, and buying proofs from as few entities as possible would allow for more transactions to be included in any block. -There is also a threshold at which time becomes a factor, but this would only apply to very underpowered devices. We will follow up with detailed benchmarks, when we have run more tests. +There is also a threshold at which time becomes a factor, but this scenario applies only to very underpowered devices. -#### Will a full node need to store all intermediate SNARK proofs? Eg. Will the storage requirements grow linearly with blocks? +#### Will a full node need to store all intermediate SNARK proofs? Will the storage requirements grow linearly with blocks? -Nope -- when a new block is generated, Mina computes the proof recursively over the prior proof and the new block. This is the advantage of recursive composition -- at any given time, nodes only need to store the most recent proof. Intermediate proofs are not needed. See this talk for more clarity on how this architecture emerged: https://www.youtube.com/watch?v=eWVGATxEB6M +No, when a new block is generated, Mina computes the proof recursively over the prior proof and the new block. This is the advantage of recursive composition -- at any given time, nodes need to store only the most recent proof. Intermediate proofs are not needed. For historical clarity on how this architecture emerged, see the [Using zkSNARKs to create a blockless blockchain](https://www.youtube.com/watch?v=eWVGATxEB6M) talk. -#### How do you control or limit the number of cores Snark Workers use? +#### How do you control or limit the number of cores that SNARK workers use? -You can use the `-snark-worker-parallelism` flag when starting up `mina daemon`. +When starting up `mina daemon`, use the `-snark-worker-parallelism` flag. diff --git a/docs/node-operators/getting-started.mdx b/docs/node-operators/getting-started.mdx index 35e0e4d14..0b83b71b1 100644 --- a/docs/node-operators/getting-started.mdx +++ b/docs/node-operators/getting-started.mdx @@ -56,7 +56,7 @@ Check out our [guide](https://youtu.be/M9lE2lgyVEo) for how to configure your Mi ### Ubuntu / Debian -Follow along below to install the latest **Stable** [Mina Release 1.3.1.2](https://github.com/MinaProtocol/mina/releases/tag/1.3.1.2) or visit the [Github Releases Page](https://github.com/MinaProtocol/mina/releases) to discover and install pre-release (Beta) builds. +Follow along below to install the latest **Stable** [Mina Release 1.3.1.2](https://github.com/MinaProtocol/mina/releases/tag/1.3.1.2) or visit the [Mina Releases Page](https://github.com/MinaProtocol/mina/releases) on GitHub to discover and install pre-release (Beta) builds. You can set up the new debian `stable` repository and install the latest version as follows: @@ -66,37 +66,37 @@ sudo apt-get update sudo apt-get install -y curl unzip mina-mainnet=1.3.1.2-25388a0 ``` -Check that daemon installed correctly by running `mina version`. The output should read `Commit 25388a0fed9695e8e9d04f75f50c2bae1c9c80db on branch master`. +Check that the daemon installed correctly by running `mina version`. The expected output is `Commit 25388a0fed9695e8e9d04f75f50c2bae1c9c80db on branch master`. ### Windows -Windows is not yet natively supported. If you are interested in receiving a grant to develop Mina for Windows, please email grants@o1labs.org or reach out in the [Discord server](https://bit.ly/MinaDiscord). +Windows is not yet natively supported. If you are interested in receiving a grant to develop Mina for Windows, please email grants@o1labs.org or reach out in the [Mina Protocol Discord server](https://discord.gg/minaprotocol). -Please instead use the Docker instructions below. +Instead, use the Docker instructions. ### macOS -macOS is used by developers, but we are not officially supporting any pre-built packages at this time. +macOS is used by developers and is not officially supporting any pre-built packages at this time. -Please instead use the Docker instructions below or you may build from source. +Instead, use the Docker instructions or build from source. ### Docker -Docker is cross-platform tool that allows you to run a virtual machine that will execute any needed software. Please follow the official installation instructions for your platform on [this page](https://docs.docker.com/get-docker/). Once docker is installed, proceed to the Mina Docker instructions on [Connect to the Network](connecting-to-the-network). +Docker is cross-platform tool that allows you to run a virtual machine that will execute any needed software. Follow the official installation instructions for your platform. See [Get Docker](https://docs.docker.com/get-docker/). After Docker is installed, proceed to the Mina Docker instructions on [Connect to the Network](connecting-to-the-network). ### Build from source -If you're running another Linux distro or some version of macOS, you can [try building Mina from source code](https://github.com/MinaProtocol/mina/blob/master/README-dev.md#building-mina). Please note that other operating systems haven't been tested thoroughly, and may have issues. Feel free to share any logs and get troubleshooting help in the [Discord server](https://bit.ly/MinaDiscord). +If you're running another Linux distro or some version of macOS, you can [try building Mina from source code](https://github.com/MinaProtocol/mina/blob/master/README-dev.md#building-mina). Please note that other operating systems haven't been tested thoroughly, and might have issues. Feel free to share any logs and get troubleshooting help in the [Mina Protocol Discord server](https://discord.gg/minaprotocol). ## Set up port forwarding and any firewalls -If you are running a firewall, you should allow traffic on TCP port 8302. Additionally, unless the `-external-ip YOUR_IP` flag is provided, the daemon will use HTTPS (443) and HTTP (80) to try and determine its own IP address. +If you are running a firewall, you must allow traffic on TCP port 8302. Additionally, unless the `-external-ip YOUR_IP` flag is provided, the daemon uses HTTPS (443) and HTTP (80) to try and determine its own IP address. -You may need to configure your router's port forwarding to allow inbound traffic to the following ports through your **external** IP address. +You might need to configure your router's port forwarding to allow inbound traffic to the following ports through your **external** IP address. - `TCP` port `8302` - _Optionally_ to use the GraphQL service, expose `TCP` port `3085` ## Next -Now that you've installed Mina and configured your network, let's move on to the next step [generating a keypair](generating-a-keypair). +Now that you've installed Mina and configured your network, you are ready to move on to the next step: [generating a keypair](generating-a-keypair). From ded0fff29f5a6082967eae48da44b2e11a8fc53c Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 14:58:07 -0400 Subject: [PATCH 5/7] mina signer two words --- docs/node-operators/mina-signer.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/node-operators/mina-signer.mdx b/docs/node-operators/mina-signer.mdx index ea16834ef..3aebcc755 100644 --- a/docs/node-operators/mina-signer.mdx +++ b/docs/node-operators/mina-signer.mdx @@ -13,4 +13,4 @@ A new version of Mina Docs is coming soon! This page will be rewritten. The Mina Signer is a NodeJS SDK that allows you to sign strings, payments, and delegations using Mina's key pairs for various specified networks. -See [MinaSigner](https://github.com/o1-labs/snarkyjs/tree/main/src/mina-signer). +See the [Mina Signer](https://github.com/o1-labs/snarkyjs/tree/main/src/mina-signer) repository for installation and usage instructions. From 03cce877dd009aa1ef7472585f19218b9fe25218 Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 15:10:26 -0400 Subject: [PATCH 6/7] restore H4 even tho all caps and fix case --- docs/node-operators/faq.mdx | 14 +++++++------- docs/node-operators/getting-started.mdx | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/node-operators/faq.mdx b/docs/node-operators/faq.mdx index b1e807289..64222069d 100644 --- a/docs/node-operators/faq.mdx +++ b/docs/node-operators/faq.mdx @@ -56,7 +56,7 @@ First, check out existing [GitHub issues](https://github.com/minaprotocol/mina/i - You can also create GitHub issues: https://github.com/minaprotocol/mina/issues. - If you need to get in touch, you can submit a ticket by using the [Mina Support chat](https://support.minaprotocol.com/). -#### Is there a block explorer? +#### Is there a Mina block explorer? Yes, check out these block explorers: @@ -90,7 +90,7 @@ The programming paradigm in Mina will be designed to reflect this - right now Mi Clients that do seek to have the full archival history can operate as archive nodes, to store the full history as well. However, because unlike other blockchains the full history isn't necessary for any actions that can be performed on chain, these are more for data analysis purposes than anything else. -#### Will you require a trusted setup? +#### Will I require a trusted setup? No! Mina uses a [Pickles SNARK](https://medium.com/minaprotocol/meet-pickles-snark-enabling-smart-contract-on-coda-protocol-7ede3b54c250), which requires no trusted setup. @@ -134,7 +134,7 @@ The following text appears each time the daemon produces a block: `Producing new block with parent $breadcrumb` -#### I produced a block, why wasn't it selected for the _Canonical Chain_? +### I produced a block, why wasn't it selected for the _canonical chain_? Due to a property of the Ouroboros Samisika consensus protocol, it's entirely possible that more than one block is produced in a particular slot. The network resolves the short-lived forks and consolidates onto one block per slot by random selection. @@ -162,7 +162,7 @@ Even though your SNARK worker might be producing SNARKs at a breakneck pace, if Pricing your SNARKs is a delicate balance between the cost of compute, the market environment (demand for SNARKs), your SNARK throughput, and the speed at which each of your SNARK worker processes can produce SNARKs. Sometimes, it might even be economically prudent to turn off your SNARK worker altogether until the market improves. -#### Will Snark workers require more storage and computing power over time? What about compared to Mina full nodes? +#### Will SNARK workers require more storage and computing power over time? What about compared to Mina full nodes? SNARK workers will not need more storage or computing power over time. SNARK workers simply query the mempool for pending transactions requiring SNARK proofs, and then generate said proof -- this does not require syncing historical data. In addition, the underlying proving cost of SNARK work doesn't get more expensive with time. @@ -174,12 +174,12 @@ SNARKs are a very overloaded term. When you read **SNARK**, it could be referrin The general terminology is: -- SNARK: as the general concept of succinct, non-interactive zero-knowledge proofs +- SNARK: the general concept of succinct, non-interactive zero-knowledge proofs - SNARK circuit: the specific circuit and prover, as pertaining to an app - SNARK proof: an individual proof that is generated by a SNARK prover -- SNARK work: a Mina protocol data structure that is a wrapper around one or two SNARK proofs and a price to be paid to the SNARK worker that generated the proof or proofs. +- SNARK work: a Mina protocol data structure that is a wrapper around one or two SNARK proofs and a price to be paid to the SNARK worker that generated the proof or proofs -#### Is there any concern about a single large SNARK worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? +### Is there any concern about a single large SNARK worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? In economics, there is a pricing strategy called predatory pricing (or dumping) where one supplier of a product seeks to exhaust competing suppliers in the market by undercutting the market price. The supplier prices their goods much cheaper than the market rate in order to drive out competitors, even if it means incurring short-term losses. After the market has been cleared, the dominant supplier then increases prices [above competitive market rates](https://en.wikipedia.org/wiki/Supracompetitive_pricing), as competition has been extinguished. diff --git a/docs/node-operators/getting-started.mdx b/docs/node-operators/getting-started.mdx index 0b83b71b1..dad83d838 100644 --- a/docs/node-operators/getting-started.mdx +++ b/docs/node-operators/getting-started.mdx @@ -29,7 +29,7 @@ This documentation is for the **Mainnet** release. :::note -Windows is not officially supported at this time. However, it may be possible to use the [Docker instructions](./#docker). If you are interested in receiving a grant to develop Mina for Windows, please email grants@o1labs.org or reach out in the [Discord server](https://bit.ly/MinaDiscord). +Windows is not officially supported at this time. However, it may be possible to use the [Docker instructions](./#docker). If you are interested in receiving a grant to develop Mina for Windows, please email grants@o1labs.org or reach out in the [Mina Protocol Discord server](https://discord.gg/minaprotocol). ::: From a73a375d879e6648a3380f10d3c8a32a714de223 Mon Sep 17 00:00:00 2001 From: barriebyron Date: Thu, 22 Jun 2023 15:26:51 -0400 Subject: [PATCH 7/7] change back to heading 4 so no show in sidebar --- docs/node-operators/faq.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/node-operators/faq.mdx b/docs/node-operators/faq.mdx index 64222069d..824f58c51 100644 --- a/docs/node-operators/faq.mdx +++ b/docs/node-operators/faq.mdx @@ -134,7 +134,7 @@ The following text appears each time the daemon produces a block: `Producing new block with parent $breadcrumb` -### I produced a block, why wasn't it selected for the _canonical chain_? +#### I produced a block, why wasn't it selected for the _canonical chain_? Due to a property of the Ouroboros Samisika consensus protocol, it's entirely possible that more than one block is produced in a particular slot. The network resolves the short-lived forks and consolidates onto one block per slot by random selection. @@ -179,7 +179,7 @@ The general terminology is: - SNARK proof: an individual proof that is generated by a SNARK prover - SNARK work: a Mina protocol data structure that is a wrapper around one or two SNARK proofs and a price to be paid to the SNARK worker that generated the proof or proofs -### Is there any concern about a single large SNARK worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? +#### Is there any concern about a single large SNARK worker [dumping]() work in the snarketplace, and then raising prices after monopolizing the market? In economics, there is a pricing strategy called predatory pricing (or dumping) where one supplier of a product seeks to exhaust competing suppliers in the market by undercutting the market price. The supplier prices their goods much cheaper than the market rate in order to drive out competitors, even if it means incurring short-term losses. After the market has been cleared, the dominant supplier then increases prices [above competitive market rates](https://en.wikipedia.org/wiki/Supracompetitive_pricing), as competition has been extinguished.