Skip to content

Commit

Permalink
Merge branch 'main' into tuto6-update
Browse files Browse the repository at this point in the history
  • Loading branch information
barriebyron authored Sep 4, 2023
2 parents bf63ccb + 3a641f3 commit 24257ee
Show file tree
Hide file tree
Showing 24 changed files with 97 additions and 78 deletions.
8 changes: 4 additions & 4 deletions docs/node-operators/archive-node.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ Running an archive node requires some knowledge of managing a PostgreSQL databas
- Ubuntu/Debian:

```
sudo apt-get install mina-archive=1.3.0-9b0369c
sudo apt-get install mina-archive=1.4.0-c980ba8
```

- Docker:

```
minaprotocol/mina-archive:1.3.0-9b0369c-bullseye
minaprotocol/mina-archive:1.4.0-c980ba8-bullseye
```

## Set up the archive node
Expand Down Expand Up @@ -155,7 +155,7 @@ To get started with installing and running the archive node using Docker, follow
--name archive \
-p 3086:3086 \
-v /tmp/archive:/data \
minaprotocol/mina-archive:1.3.0-9b0369c-bullseye \
minaprotocol/mina-archive:1.4.0-c980ba8-bullseye \
mina-archive run \
--postgres-uri postgres://postgres:postgres@postgres:5432/archive \
--server-port 3086
Expand Down Expand Up @@ -213,7 +213,7 @@ To run the archive node using Docker Compose:
ports:
- '5432:5432'
archive:
image: 'minaprotocol/mina-archive:1.3.0-9b0369c-bullseye'
image: 'minaprotocol/mina-archive:1.4.0-c980ba8-bullseye'
command: >-
mina-archive run --postgres-uri
postgres://postgres:postgres@postgres:5432/archive --server-port 3086
Expand Down
53 changes: 15 additions & 38 deletions docs/node-operators/connecting-to-the-network.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -38,32 +38,9 @@ Steps to install mina, connect to the Mina Mainnet network, and test connectivit

The first step to connecting to Mainnet is to install the latest daemon version.

Follow the steps for your operating system.
### Ubuntu 20.04 and Debian 10, 11, 12

### Ubuntu 18.04, 20.04 and Debian 9, 10, 11

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 install pre-release (Beta) builds.

To set up the new `stable` package repository and install the latest version:

```sh
echo "deb [trusted=yes] http://packages.o1test.net $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/mina.list
sudo apt-get install --yes apt-transport-https
sudo apt-get update
sudo apt-get install --yes curl unzip mina-mainnet=1.3.1.2-25388a0
```

To verify the daemon is correctly installed:

```sh
mina version
```

The expected output is:

```text
Commit 25388a0fed9695e8e9d04f75f50c2bae1c9c80db on branch master
```
To install the latest [Mainnet **Stable** Release 1.4.0](https://github.com/MinaProtocol/mina/releases/tag/1.4.0), use the [Installation](/node-operators/getting-started#installation) steps for your environment.

## Start a standalone mina node

Expand All @@ -73,13 +50,13 @@ Auto-restart flows are in place to ensure your nodes perform optimally.

1. Start a standalone mina node to make sure everything works.

To start a Mina node instance and connect to the live network:
To start a mina node instance and connect to the live network:

```sh
mina daemon --peer-list-url https://storage.googleapis.com/seed-lists/mainnet_seeds.txt
```

The `--peer-list` argument specifies the the source file of seed peer addresses for the initial peer to connect to on the network. Mina is a [peer-to-peer](/glossary#peer-to-peer) protocol, so there is no dependence on a single centralized server.
The `--peer-list` argument specifies the source file of seed peer addresses for the initial peer to connect to on the network. Mina is a [peer-to-peer](/glossary#peer-to-peer) protocol, so there is no dependence on a single centralized server.

If you have a key with MINA stake and want to produce blocks:

Expand Down Expand Up @@ -118,7 +95,7 @@ To produce blocks or otherwise customize the configuration for the mina daemon:
Replace `<BLOCK_PRODUCER_KEY_PATH>` with the full path to your block producer private key. For example, `/home/ubuntu/keys/my-wallet`.
If you do not want to produce blocks then you can keep `~/.mina-env` empty for now.
If you do not want to produce blocks, then you can keep `~/.mina-env` empty for now.
1. To change how mina is configured, specify flags to the mina daemon process with space-separated arguments between the quotes in `EXTRA_FLAGS=""`.
Expand All @@ -129,7 +106,7 @@ To produce blocks or otherwise customize the configuration for the mina daemon:
- Mainnet package [https://storage.googleapis.com/seed-lists/mainnet_seeds.txt](https://storage.googleapis.com/seed-lists/mainnet_seeds.txt)
- Change with `--peer-list-url`
1. After your `.mina-env` file is ready, start a Mina node instance and connect to the live network:
1. After your `.mina-env` file is ready, start a mina node instance and connect to the live network:
```sh
systemctl --user daemon-reload
Expand Down Expand Up @@ -168,15 +145,15 @@ Look at logs that show the last 1000 lines, and follow from there:
journalctl --user -u mina -n 1000 -f
```

In some cases, you might need run the following command to view the logs:
In some cases, you might need to run the following command to view the logs:

```sh
journalctl --user-unit mina -n 1000 -f
```

### Docker

When running your daemon using Docker, first ensure that your private key has the correct permissions.
When running your daemon using Docker, ensure your private key has the correct permissions.

```sh
cd ~
Expand All @@ -197,7 +174,7 @@ PEER_LIST_URL=https://storage.googleapis.com/seed-lists/mainnet_seeds.txt

Replace `<BLOCK_PRODUCER_KEY_PATH>` with the full path to your block producer private key. For example, `/home/ubuntu/keys/my-wallet`.

If you do not want to produce blocks, then provide only the `PEER_LIST_URL`.
If you do not want to produce blocks, provide only the `PEER_LIST_URL`.

Now, run the image with your `~/.mina-config` and `~/.mina-env` files mounted into the container:

Expand All @@ -208,7 +185,7 @@ docker run --name mina -d \
--mount "type=bind,source=$(pwd)/.mina-env,dst=/entrypoint.d/mina-env,readonly" \
--mount "type=bind,source=$(pwd)/keys,dst=/keys,readonly" \
--mount "type=bind,source=$(pwd)/.mina-config,dst=/root/.mina-config" \
minaprotocol/mina-daemon:1.3.1.2-25388a0-bullseye-mainnet \
minaprotocol/mina-daemon:1.4.0-c980ba8-bullseye-mainnet \
daemon
```

Expand All @@ -234,7 +211,7 @@ Monitor connectivity to the network:
docker exec -it mina mina client status
```

At least 10 peers are expected. Watch the block height and the max observed block height climb.
At least 10 peers are expected. Watch the block height and the maximum observed block height climb.

:::tip

Expand All @@ -246,13 +223,13 @@ If you encounter `[Warn] Shutdown before Mina instance was created, not saving a

Monitor the mina client status in a different terminal window.

Now that a node is started and running the Mina daemon, run:
Now that a node is started and running the mina daemon, run:

```sh
mina client status
```

When first starting up a node, it can take up to a minute before `mina client status` connects to the daemon. If you see `Error: daemon not running. See mina daemon`, just a wait a bit and try again.
When first starting up a node, it can take up to a minute before `mina client status` connects to the daemon. If you see `Error: daemon not running. See mina daemon`, just wait a bit and try again.

The expected response includes these fields:

Expand All @@ -263,14 +240,14 @@ The expected response includes these fields:

- `Sync Status: Bootstrap` means that the node is bootstrapping and needs to sync with the rest of the network. Be patient here as this step might take some time for the node to get all the data it needs.

- After a while, the node connects to more peers and then moves into `Sync Status: Catchup` which gathers the most recent blocks and state while catching up to the the highest block.
- After a while, the node connects to more peers and then moves into `Sync Status: Catchup`, which gathers the most recent blocks and state while catching up to the the highest block.

- When sync status reaches `Synced` and the node is connected to 1 or more peers, the node is successfully connected to the network. A corresponding daemon log shows the sync status: `[Info] Mina daemon is now synced`.

- An issue with your port configuration can causethe `Bootstrap` state to persist for more than an hour.

## Step up your game

Now that you have a fully synced node, learn about some of the more advanced features of the daemon such as [Sending a payment](sending-a-payment) and [Staking & Delegating](staking-and-snarking).
Now that you have a fully synced node, learn about some of the more advanced features of the daemon, such as [Sending a payment](sending-a-payment) and [Staking & Delegating](staking-and-snarking).

To earn MINA tokens, check out the [Mina Foundation Delegation Program](foundation-delegation-program).
77 changes: 45 additions & 32 deletions docs/node-operators/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ A new version of Mina Docs is coming soon! This page will be rewritten.
# Getting Started

<Subhead>
Welcome to Mina! This section walks you through the process of setting up a Mina node. After we will show you how to generate a keypair for use with the network. Finally, we'll show you how to connect to the network and begin producing blocks.
Welcome to Mina! This section walks you through the process of setting up a Mina node, provides instructions on how to generate a keypair for use with the network, connect to the network, and begin producing blocks.
</Subhead>

:::info
Expand All @@ -25,78 +25,91 @@ This documentation is for the **Mainnet** release.

## Requirements

**Software**: macOS, Linux (currently supports Debian 9 and Ubuntu 18.04 LTS), or any host with Docker
**Software**: Supported environments include macOS, Linux (Debian 10, 11, 12 and Ubuntu 20.04 LTS), and any host machine with Docker.

:::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 [email protected] or reach out in the [Mina Protocol Discord server](https://discord.gg/minaprotocol).
**Processor**: Only AMD64 CPU architecture is supported.

:::
**Hardware**: Sending and receiving MINA does not require any special hardware.

**Hardware**: Sending and receiving mina does not require any special hardware, but running a block producer on the Mina network currently requires:
Running a block producer on the Mina network requires at least:

- at least a 8-core processor
- at least 16GB of RAM
- 8-core processor
- 16 GB of RAM

Note that if you plan on running a snark worker node at the same time as a block producer, you may need more RAM. GPUs aren't currently required, but may be required for node operators when the protocol is upgraded.
More RAM is required to run a SNARK worker node at the same time as a block producer.

**Network**: At least 1 Mbps connection

**VM Instances**:
O(1) Labs has tested running nodes on several cloud providers, and recommends the following instances for basic node operator needs. Keep in mind that custom requirements as well as different cost constraints may require a different instance type.

- AWS - [c5.2xlarge](https://www.ec2instances.info/?filter=c5.2xl&region=us-west-2&cost_duration=daily&selected=c5.2xlarge)
- GCP - [c2-standard-8](https://cloud.google.com/compute/docs/machine-types)
- Azure - [Standard_F8s_v2](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-compute#fsv2-series-1)
- Digital Ocean - [c-8-16gib](https://cloud.digitalocean.com/droplets/new?size=c-8-16gib)
O(1) Labs has tested running nodes on several cloud providers. We recommend the following instances for basic node operator needs. Custom requirements and different cost constraints might require a different instance type.

Check out our [guide](https://youtu.be/M9lE2lgyVEo) for how to configure your Mina node on Google Cloud.
- AWS [c5.2xlarge](https://www.ec2instances.info/?filter=c5.2xl&region=us-west-2&cost_duration=daily&selected=c5.2xlarge)
- GCP [c2-standard-8](https://cloud.google.com/compute/docs/machine-types)
- Azure [Standard_F8s_v2](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes-compute#fsv2-series-1)
- Digital Ocean [c-8-16gib](https://cloud.digitalocean.com/droplets/new?size=c-8-16gib)

Check out the [Connecting to the Mina Testnet (Google Cloud)](https://youtu.be/M9lE2lgyVEo) video for steps to configure your mina node on Google Cloud.

## Installation

### Ubuntu / Debian
To install the latest [Mainnet **Stable** Release 1.4.0](https://github.com/MinaProtocol/mina/releases/tag/1.4.0), use the installation steps for your environment.

The binary download is around 1 GB, so the installation might take a few minutes.

To discover and install pre-release (Beta) builds, see the [Mina Releases](https://github.com/MinaProtocol/mina/releases) page on GitHub.

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.
### Ubuntu and Debian

You can set up the new debian `stable` repository and install the latest version as follows:
To set up the new Debian `stable` repository and install the latest binary version:

```
echo "deb [trusted=yes] http://packages.o1test.net $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/mina.list
sudo apt-get update
sudo apt-get install -y curl unzip mina-mainnet=1.3.1.2-25388a0
sudo apt-get install -y curl unzip mina-mainnet=1.4.0-c980ba8
```

Check that the daemon installed correctly by running `mina version`. The expected output is `Commit 25388a0fed9695e8e9d04f75f50c2bae1c9c80db on branch master`.
To verify the mina daemon installation, run:

- `mina version`

The expected output is `Commit c980ba87c3417f40a7081225dfe7478c5ee70fd7 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 [email protected] or reach out in the [Mina Protocol Discord server](https://discord.gg/minaprotocol).
Windows is not natively supported. Instead, use the [Docker instructions](./#docker).

Instead, use the Docker instructions.
If you are interested in receiving a grant to develop Mina for Windows, email [email protected] or reach out in the [Mina Protocol Discord server](https://discord.gg/minaprotocol).

### macOS

macOS is used by developers and is not officially supporting any pre-built packages at this time.
macOS is used by developers and is not officially supporting any pre-built packages.

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. 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).
Docker is a cross-platform tool. You can download and install Docker on multiple platforms.

Use the Docker installation instructions for your platform on [Get Docker](https://docs.docker.com/get-docker/). After Docker is installed, follow the [Connect to the Mina Network](/node-operators/connecting-to-the-network#docker) instructions.

### 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 might have issues. Feel free to share any logs and get troubleshooting help in the [Mina Protocol Discord server](https://discord.gg/minaprotocol).
On Linux or macOS operating systems, you can experiment with [Building Mina](https://github.com/MinaProtocol/mina/blob/master/README-dev.md#building-mina) from source code.

Other operating systems haven't been tested thoroughly and might have issues. You can share logs and get troubleshooting help in the [Mina Protocol Discord server](https://discord.gg/minaprotocol).

## Set up port forwarding and firewalls

## Set up port forwarding and any firewalls
If you are running a firewall, you must allow traffic on TCP port 8302.

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.
Unless the `-external-ip YOUR_IP` flag is provided, the daemon uses HTTPS (443) and HTTP (80) to determine its own 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.
Enable port forwarding on your router 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`
- TCP port `8302`
- To use the GraphQL service, expose TCP port `3085`

## Next

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).
Now that you've installed mina and configured your network, you can move on to the next step: [generating a keypair](generating-a-keypair).
29 changes: 29 additions & 0 deletions docs/zkapps/experimental.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Experimental features
description: Experimental features are not considered production-ready.
keywords:
- experimental
- feedback
---

# Experimental features

Some new features are considered experimental before they are production-ready. Experimental features are clearly marked and link to this page.

Exposing experimental features gives you an opportunity to try our newest features sooner.

In return, your feedback helps us make sure that our new features are reliable and useful.

## Feedback

We appreciate any and all feedback you want to provide.

The best place to provide feedback and ask questions is on [Mina Protocol Discord](https://bit.ly/MinaDiscord).

To ask zkApps questions and engage with other developers building zkApps with SnarkyJS, use the [#zkapps-developers](https://discord.com/channels/484437221055922177/915745847692636181) channel.

Experimental features are in active development and your feedback is especially appreciated.

- The feature may have bugs
- The feature may be changed, deprecated, or removed
- All documentation for the feature explicitly notes the feature is experimental
4 changes: 2 additions & 2 deletions docs/zkapps/snarkyjs/recursion.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ zkApp programmability is not yet available on the Mina Mainnet. You can get star

:::

Experimental. This API may change.
[Experimental](/zkapps/experimental). This API may change.

Specifically, we are looking into refactoring ZkProgram methods to explicitly return values rather than requiring them to be passed as further inputs.
Specifically, ZkProgram methods could be refactored to explicitly return values rather than requiring them to be passed as further inputs.

# Recursion

Expand Down
4 changes: 2 additions & 2 deletions docs/zkapps/snarkyjs/smart-contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ keywords:

:::info

Experimental. This API may change.
[Experimental](/zkapps/experimental). This API may change.

Specifically, we are looking into refactoring ZkProgram methods to explicitly return values rather than requiring them to be passed as further inputs.
Specifically, ZkProgram methods could be refactored to explicitly return values rather than requiring them to be passed as further inputs.

:::

Expand Down
Binary file removed static/img/7_Snapps_DeploySnappUI.jpg
Binary file not shown.
Binary file removed static/img/7_zkApps_DeploySnappUI.jpg
Binary file not shown.
Binary file removed static/img/9_Snapps_Off-Chain_State.jpg
Binary file not shown.
Binary file removed static/img/CLIs.png
Binary file not shown.
Binary file removed static/img/Discord-Logo-Color.png
Binary file not shown.
Binary file removed static/img/Discord.png
Binary file not shown.
Binary file removed static/img/Documents_SNARKS_p3-01_Mobile 1.png
Binary file not shown.
Binary file removed static/img/SnarksOverview.png
Binary file not shown.
Binary file removed static/img/brandon.webp
Binary file not shown.
Binary file removed static/img/mycoolsnapp.png
Binary file not shown.
Binary file removed static/img/prover-function.png
Binary file not shown.
Binary file removed static/img/smart-contract.png
Binary file not shown.
Binary file removed static/img/snapp-ui.png
Binary file not shown.
Binary file removed static/img/staking_power.png
Binary file not shown.
Binary file removed static/img/staking_power_send.png
Binary file not shown.
Binary file removed static/img/submit-transaction-network.png
Binary file not shown.
Binary file removed static/img/verifier-function.png
Binary file not shown.
Binary file removed static/img/what-are-snapps.png
Binary file not shown.

0 comments on commit 24257ee

Please sign in to comment.