# Windows

## 1. 安装 Docker

在运行节点之前，我们需要安装 Docker。 您可以从[这里](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe)下载适用于 Windows 的 Docker Desktop。

下载完成后，您将在下载文件夹中找到可执行文件。

![Downloaded Docker](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FdQbmrtTb9mT7l0wSMsxv%2Fdownloaded.png?alt=media\&token=7c7ce87c-eaa6-4372-8d8b-c78de7daebff)

打开 `Docker Desktop Installer.exe`，并开始安装过程。

安装完成后，Docker 会自动启动。

![Docker Installed](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2F0AqRQ8NPgbI01alG7ltw%2Finstalled.png?alt=media\&token=2460f9d0-7f7d-4c6a-8c22-8ebb14095c58)

## 2. 安装 WSL 2

Docker 需要安装额外的依赖项才能在 Windows 上运行 Linux 容器。

您将收到类似于以下通知的通知，单击提供的链接，将打开一个新的浏览器窗口，我们可以下载依赖项。

![WSL Notice](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2F04sxq5aZnTrnukqvkIde%2Fwsl-notice.png?alt=media\&token=2bfe7c87-c763-4ff4-b79e-07c0b9a630fe)

点击链接 "Download the latest package"

![Download WSL 2](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FFjjDSq6KZvKG31WrHmox%2Fwsl-download.png?alt=media\&token=8c716aae-ae54-451a-8930-35629d9aadf6)

你可以在下载目录中找到可执行文件：

![WSL 2 Downloaded](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FxOFLwwPvsX1grMxKiFBH%2Fwsl-downloaded.png?alt=media\&token=7795ad94-61ed-4d69-ad28-2dd55bdbe26c)

点击可执行文件开始安装：

![Install WSL 2](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FoZip2lsWVHpuiae74ukq%2Fwsl-install.png?alt=media\&token=55ff97df-d1f4-40bb-8527-89c5c0b7f0b8)

安装完成后你可以点击重启或 Restart。&#x20;

![Restart WSL 2](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FPUcP9tCENzUj1CeHO7y2%2Fwsl-restart.png?alt=media\&token=14d6b8cc-ad1c-4b76-a063-da002fa30b22)

## 3. 启动 Docker Desktop

打开双击 Docker Desktop application you should see t应用程序，以下是启动中的截图：

![Docker Desktop App is starting](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FqGcqcZK3dhXBdazzDSWY%2Fdocker-starting-2.png?alt=media\&token=a8818be8-c152-423d-be95-eba257280a19)

当 Docker Desktop 启动成功后，黄色图标会变绿。

![Docker Desktop Started](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FXo2kgBxdtQqgC5c5rReg%2Fdocker-started.png?alt=media\&token=7a128151-7a64-49b8-8f8d-b27db65c87d3)

## 4. 下载 Aptos 节点运行所需文件

### 4.1 新建 aptos-node 文件夹

您可以在 C 盘 或 D 盘下新建 aptos-node 文件夹。

{% hint style="info" %}
注意：

* 文件夹名称不要出现中文等特殊字符。
  {% endhint %}

### 4.2 下载节点文件

请将文件都下载到 aptos-node 目录下：&#x20;

* Docker 编排脚本：[docker-compose.yaml](https://raw.githubusercontent.com/jiangydev/aptos-node/main/docker-compose.yaml) （文件如下）

{% file src="<https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FRDgNTVNp9IQjJVwp6Bb0%2Fdocker-compose.yaml?alt=media&token=e7f7f6eb-ea8e-41ba-bea1-ef59546d4c55>" %}

* 全节点配置文件：[public full node.yaml](https://raw.githubusercontent.com/jiangydev/aptos-node/main/public_full_node.yaml)（文件如下）

{% file src="<https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2Fso0B5gmLNfHFIqeLaD9b%2Fpublic_full_node.yaml?alt=media&token=b6b40e02-af66-42a3-b7d7-56169008c058>" %}

* 创世区块文件：[genesis.blob](https://devnet.aptoslabs.com/genesis.blob) （文件可能会经常更新，所以请点击左侧链接下载最新）
* waypoint（可验证检查点）文件：[waypoint.txt](https://devnet.aptoslabs.com/waypoint.txt)（文件可能会经常更新，所以请点击左侧链接下载最新；如果没有自动下载，请在页面上 Ctrl + s 保存即会下载）

下载完成后：

![Download Aptos node files](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2Fpv1EueUa1udaktntHJZN%2Fdownload-aptos-node-file.png?alt=media\&token=f96d56bf-5c2b-40c9-bac8-45d39eafe266)

## 5. 创建静态身份

创建静态身份的目的是，每次启动都使用这个身份。

在文件夹内，地址栏中输入【powershell】，即可打开命令行界面：

![Open Powershell CLI](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FOkGdkpAz9ibibJJQIzEz%2Fimage.png?alt=media\&token=89084955-f061-4d65-a4cc-8cbbe8d3954b)

### 5.1 生成私钥、公钥和 Peer ID

在打开的命令行界面分别输入下面的命令生成私钥：

```
docker pull aptoslabs/tools:devnet
```

```powershell
sudo docker run --rm aptoslabs/tools:devnet sh -c "echo '开始生成私钥...' && aptos key generate --encoding hex --key-type x25519 --output-file /root/private-key.txt && echo '\n\n开始生成公钥和 Peer ID...' && aptos key extract-peer --encoding hex --private-key-file /root/private-key.txt --output-file /root/peer-info.yaml && echo '\n\n您的私钥：' && cat /root/private-key.txt && echo '\n\n您的公钥和 Peer ID 信息如下：' && cat /root/peer-info.yaml"
```

运行的结果如下：

```
开始生成私钥...
{
  "Result": "Success"
}


开始生成公钥和 Peer ID...
{
  "Result": {
    "3129d20a6ebb3a92be794db60416e6eb92c826d2733c391a4f8ee6d4e573b764": {
      "addresses": [],
      "keys": [
        "3129d20a6ebb3a92be794db60416e6eb92c826d2733c391a4f8ee6d4e573b764"
      ],
      "role": "Downstream"
    }
  }
}


您的私钥：
08500EDFBE94721A8D5614529AAC4E1AF427BB47498EC0E1A65815057137516A

您的公钥和 Peer ID 信息如下：
---
3129d20a6ebb3a92be794db60416e6eb92c826d2733c391a4f8ee6d4e573b764:
  addresses: []
  keys:
    - 3129d20a6ebb3a92be794db60416e6eb92c826d2733c391a4f8ee6d4e573b764
  role: Downstream
```

* `08500EDFBE94721A8D5614529AAC4E1AF427BB47498EC0E1A65815057137516A` 就是私钥；
* `3129d20a6ebb3a92be794db60416e6eb92c826d2733c391a4f8ee6d4e573b764` 是 Peer ID，也是公钥；

{% hint style="info" %}
⚠ 上面的私钥、公钥（Peer ID）都需要备份！
{% endhint %}

### 5.2 修改全节点的静态身份

打开 `public_full`\_`node.yaml` 文件【文件名上右击 -> 打开方式 -> 记事本】，并修改成如下信息：

{% hint style="info" %}
提醒：

* 请使用上一步自己生成的私钥和 Peer ID，以下示例仅供参考。
* 请妥善保存好私钥；（公钥和 Peer ID 是由私钥生成的）
* 一定要按如下格式修改。（下面有替换示例截图🙂）
  {% endhint %}

```yaml
base:
    # This is the location Aptos will store its database. It is backed by a dedicated docker volume
    # for persistence.
    data_dir: "/opt/aptos/data"
    role: "full_node"
    waypoint:
        # This is a checkpoint into the blockchain for added security.
        from_file: "/opt/aptos/etc/waypoint.txt"

execution:
    # Path to a genesis transaction. Note, this must be paired with a waypoint. If you update your
    # waypoint without a corresponding genesis, the file location should be an empty path.
    genesis_file_location: "/opt/aptos/etc/genesis.blob"

state_sync:
  state_sync_driver:
    enable_state_sync_v2: true

full_node_networks:
    - network_id: "public"
      discovery_method: "onchain"
      identity:
        type: "from_config"
        key: "这里换成自己生成的私钥"
        peer_id: "这里换成自己生成的PeerID"
      # The network must have a listen address to specify protocols. This runs it locally to
      # prevent remote, incoming connections.
      listen_address: "/ip4/0.0.0.0/tcp/6180"
      # Define the upstream peers to connect to
      seeds:
        bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
            addresses:
            - "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/handshake/0"
            role: "Upstream"
        7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61:
            addresses:
            - "/dns4/pfn1.node.devnet.aptoslabs.com/tcp/6182/noise-ik/7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61/handshake/0"
            role: "Upstream"
        f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b:
            addresses:
            - "/dns4/pfn2.node.devnet.aptoslabs.com/tcp/6182/noise-ik/f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b/handshake/0"
            role: "Upstream"

api:
    # This specifies your REST API endpoint. Intentionally on public so that Docker can export it.
    address: 0.0.0.0:8080

```

替换示例：

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FYpaFuQNTpU20FhjS560w%2Fimage.png?alt=media\&token=648ac949-8feb-4831-8902-6fa05e5001a0)

## 6. 运行全节点

在前面的文件夹中，地址栏中输入【powershell】，打开命令行界面：

![Open Powershell CLI](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FOkGdkpAz9ibibJJQIzEz%2Fimage.png?alt=media\&token=89084955-f061-4d65-a4cc-8cbbe8d3954b)

在命令中分别输入如下命令：

```
docker-compose pull
```

```
docker-compose up -d
```

![Run aptos node](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FxxVnBy0slJYiuexhddFe%2Frun-aptos-node.png?alt=media\&token=3ce238ce-38a0-4fc8-bf26-0d94c56a8529)

左侧是运行的结果，右侧是在 Docker Desktop 中看到运行中状态的节点。你可以在图形化界面中管理你的节点状态。

## 7. 检查节点

在浏览器中访问：<http://127.0.0.1:9101/metrics>

{% hint style="info" %}
确保节点是运行中，否则无法访问上面的地址！
{% endhint %}

### 7.1 查看 Peer ID

在页面搜索：peer

* Peer ID 要是上面自己填写的前缀；

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FJmA7he7djfeHG19HujSn%2Fnode-check-peer-id.png?alt=media\&token=9096090c-432c-4214-9c2a-35a310ae9f8a)

### 7.2 查看同步状态

在页面搜索：aptos\_state\_sync\_version

Aptos 网络看板可以查看当前区块高度（用于检查本地节点同步情况）：[https://status.devnet.aptos.dev](https://status.devnet.aptos.dev/)

## 8. 节点更新

{% hint style="info" %}
本节仅用于每周五的节点更新使用。
{% endhint %}

### 8.1 关闭节点

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FC0uJ7czcRjMj9MvnC8uE%2Fimage.png?alt=media\&token=debf57b9-d79d-4a26-924a-59606bc9bf58)

### 8.2 删除数据文件

在【Volumes】中找到 node\_db 并点击删除。

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FbgalRq7UcpJ83NPEx6At%2Fimage.png?alt=media\&token=a1aae7b2-a075-40e3-a798-741e3d9039b5)

### 8.3 删除 `genesis.blob` 和 `waypoint.txt` 文件并重新下载

进入之前下载文件的目录，重新下载覆盖以下两个文件：

* 创世区块文件：[genesis.blob](https://devnet.aptoslabs.com/genesis.blob)&#x20;
* waypoint（可验证检查点）文件：[waypoint.txt](https://devnet.aptoslabs.com/waypoint.txt)

{% hint style="info" %}
注意：

* 2022年6月10日更新：<mark style="color:red;">本周必须更新</mark><mark style="color:red;">`public_full`</mark><mark style="color:red;">\_</mark><mark style="color:red;">`node.yaml`</mark> <mark style="color:red;"></mark><mark style="color:red;">文件</mark>。
  {% endhint %}

### 8.4 更新节点镜像

在更新文件的目录下进入命令行界面，并运行如下命令：

```
docker-compose pull
```

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FXazjoAu96y8WTgma3ljo%2Fimage.png?alt=media\&token=83f94e61-472f-4cab-b9dc-781b8dc57704)

### 8.5 启动全节点

在上面的命令行界面中运行如下命令：

```
docker-compose up -d
```

![](https://837065856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEVfhRe3oc2wVpOxYrh1V%2Fuploads%2FuDKs7At5AHrZVUTIEN25%2Fimage.png?alt=media\&token=06367b96-7572-45fb-a31e-307bc9af2f90)
