# Mina--连接网络

By [chezhe](https://paragraph.com/@v2y3x4) · 2021-11-12

---

连接网络
====

在本节中，我们将连接到主网网络并发送我们的第一笔交易。让我们首先启动节点，以便我们可以开始发布命令。

更新软件
----

连接到Mainnet的第一步是安装最新的守护程序版本。请根据你的操作系统执行下面的指示。

### Ubuntu 18.04 / Debian 9

按照下面的方法安装最新的 [Mina 稳定版 1.2.0](https://github.com/MinaProtocol/mina/releases/tag/1.2.0)，或者访问 [Github](https://github.com/MinaProtocol/mina/releases) 发布页面，发现并安装预发布（Beta）版本。

你可以设置新的 debian `stretch stable` 仓库并安装最新版本，方法如下：

    echo "deb [trusted=yes] http://packages.o1test.net stretch stable" | sudo tee /etc/apt/sources.list.d/mina.list
    sudo apt-get update
    sudo apt-get install -y curl unzip mina-mainnet=1.2.0-fe51f1e
    

通过运行 `mina version` 检查守护进程是否正确安装。在分支 `master`上，输出应该是 `Commit fe51f1ef5cfbcb4d5f559af39080963cf28ff1af` 。

启动一个节点
======

由于这项技术仍然相对较新，有一些罕见的情况，你的节点可能会遇到一些问题。我们不希望你的节点出现故障而你却没有意识到！所以我们为你做了一些官方支持的自动重启流程。我们将在未来的版本中对这些进行迭代。

然而，首先我们要在开始自动重启流程之前，通过手动运行它来确保一切正常。

> 注意：如果你使用 Hetzner 主机供应商，我们目前遇到了一个问题，Hetzner 认为我们的软件是恶意的。请参阅[故障排除页面](https://docs.minaprotocol.com/en/troubleshooting#networking)的网络部分，了解如何在启动节点之前缓解这一问题。

运行下面的命令，启动一个 Mina 节点实例并连接到实时网络:

如果你有一个有股权的钥匙，并且想生产区块，也可以提供 --区块生产者-钥匙 `~/keys/my-wallet`，如果不是默认的，就用你的私人钥匙的路径代替 `~/keys/my-wallet`。

上面指定的 `--peer-list` 参数指的是种子对等体地址--这是我们将连接到网络上的初始对等体。由于 Mina 是一个点对点的协议，所以没有一个我们依赖的集中式服务器。

关于首次运行节点时的常见问题，请看这里。

你还没有完成! 现在你已经通过运行独立进程确认了事情没有问题，重要的是我们以一种当Mina 进出死后会自动重启的方式启动它。

首先用 `Ctrl-C` 杀死现有的 Mina 守护进程，然后继续阅读：

### Ubuntu 18.04 / Debian 9

为了产生区块或以其他方式定制 Mina 守护程序的配置，创建一个包含以下内容的文件`~/.mina-env`：

    CODA_PRIVKEY_PASS="My_V3ry_S3cure_Password"
    LOG_LEVEL=Info
    FILE_LOG_LEVEL=Debug
    EXTRA_FLAGS=" --block-producer-key <BLOCK_PRODUCER_KEY_PATH>"
    

确保将 `<BLOCK_PRODUCER_KEY_PATH>` 替换为您的区块链生产者私钥的完整路径，例如，`/home/ubuntu/keys/my-wallet`。

如果你不打算生产区块，那么你可以暂时保持 `~/.mina-env` 为空。

要改变 Mina 的配置方式，只需在 `EXTRA_FLAGS=""` 的引号之间用空格分隔的参数向 Mina 守护进程指定标志。

`mina systemd` 服务不再需要 `peers.txt` 文件，它只是使用 `PEERS_LIST_URL` 变量来决定从哪里获取初始对等体，mainnet 包的 `PEERS_LIST_URL` 默认为[https://storage.googleapis.com/mina-seed-lists/mainnet\_seeds.txt](https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt)。

一旦你的 `.mina-env` 准备好了，运行下面的命令来启动一个 Mina 节点实例并连接到实时网络:

    systemctl --user daemon-reload
    systemctl --user start mina
    systemctl --user enable mina
    sudo loginctl enable-linger
    

这些命令将允许节点在你注销后继续运行，并在机器重启时自动重新启动。

默认情况下，节点使用默认的 `8302` 外部端口连接到网络。这可以用 `-external-port` 标志来改变，只要把它添加到 `EXTRA_FLAGS` 中即可。

你也可以研究一下在后台运行并自动重启的 Mina 进程本身。

这个命令会让你知道 Mina 在启动时是否有任何问题:

    systemctl --user status mina
    

你可以优雅地停止 Mina，并停止自动重新启动服务:

    systemctl --user stop mina
    

手动重启：

    systemctl --user restart mina
    

查看日志：

    journalctl --user -u mina -n 1000 -f
    

在某些情况下，为了查看日志，你需要运行以下命令来代替：

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

该命令将向你显示最后 1000 行，并从那里开始追踪。

### Docker

当使用 Docker 运行你的守护程序时，首先确保你的私钥有正确的权限。

    cd ~
    chmod 700 ~/keys
    chmod 600 ~/keys/my-wallet
    mkdir ~/.mina-config
    

现在，只需用你的密钥和 `~/.mina-config` 挂载运行该镜像。

    docker run --name mina -d \
    -p 8302:8302 \
    --restart=always \
    --mount "type=bind,source=`pwd`/keys,dst=/keys,readonly" \
    --mount "type=bind,source=`pwd`/.mina-config,dst=/root/.mina-config" \
    -e CODA_PRIVKEY_PASS="My_V3ry_S3cure_Password" \
    minaprotocol/mina-daemon:1.2.0-fe51f1e-mainnet \
    daemon \
    --block-producer-key /keys/my-wallet \
    --peer-list-url https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt
    

运行 `docker logs -f mina` 来跟踪日志，如果它崩溃了，就用 `docker logs mina > mina-log.txt` 将日志输出保存到文件中，并将输出发布到 `#mentor-nodes` 频道，或者将完整的 `~/.mina-config/mina.log` 附加到 github 问题中，并在 discord 中链接该问题。

运行 `docker exec -it mina mina client status` 来监测与网络的连接，你应该很快找到至少 10 个节点，并观察块高度/最大观察块高度的攀升。

> 注意：如果你在尝试运行 `Docker` 容器时遇到 `[Warn] Shutdown before Mina instance was created, not saving a visualization` ，请[增加Docker容器被允许使用的资源](https://docs.docker.com/config/containers/resource_constraints/)。

检查连接
----

现在我们已经启动了一个节点，并且正在运行 Mina 守护进程，打开另一个 shell 并运行以下命令：

    mina client status
    

> 注意：在第一次启动时，Mina 客户端状态可能需要一分钟才能连接到守护进程。因此，如果你看到 `Error: daemon not running. see mina daemon`，只需等待一下，然后再试一下。

最有可能的是，我们将看到一个包括以下字段的回应：

    ...
    Peers:                                         Total: 4 (...)
    ...
    Sync Status:                                   Bootstrap
    

如果你看到 `Sync Status:Bootstrap`，这意味着节点正在引导，需要与网络的其他部分同步。你可能需要在这里耐心等待，因为这一步可能需要一些时间让节点获得所有需要的数据。

一段时间后，你的节点应该连接到更多的对等体，然后应该进入`Sync Status:Catchup`，这意味着我们正在收集最近的区块，并试图追赶最高的区块的状态。

当同步状态达到 `Synced`，并且节点连接到 1 个或多个节点时，我们将成功连接到网络。我们在同步后也会看到相应的守护进程日志 `[Info] Mina daemon is now synced`。

如果你的 `Bootstrap` 状态持续了一个多小时，你的端口配置可能有问题。

更多
--

现在我们有了一个完全同步的节点，我们可以学习守护程序的一些更高级的功能，如[发送付款](https://docs.minaprotocol.com/en/using-mina/send-payment)和[抵押与委托](https://docs.minaprotocol.com/en/using-mina/staking)。如果你想赚取更多的代币，请查看[基金会的委托计划](https://docs.minaprotocol.com/en/advanced/foundation-delegation-program)。

原文：

[https://docs.minaprotocol.com/en/using-mina/connecting](https://docs.minaprotocol.com/en/using-mina/connecting)

---

*Originally published on [chezhe](https://paragraph.com/@v2y3x4/mina-3)*
