# Запуск локального тестнета

Вы можете запустить локальный тестнет блокчейна Aptos. Эта локальная тестовая сеть не будет подключена к сети разработчиков Aptos. Она будет работать на вашем локальном компьютере независимо от других сетей Aptos. Вы можете использовать ее для тестирования и разработки.

Вы можете запустить локальный тестнет двумя способами:

1. Используя исходные файлы Aptos. Этот подход полезен для тестирования модификаций в кодовой базе Aptos-core или в Aptos Framework.
2. Используя Docker. Это особенно полезно для создания сервисов вдобавок к Aptos Blockchain или Aptos Framework, поскольку нет дополнительных затрат на сборку, а реестр сохраняется при перезапуске сети (по умолчанию).

Остальная часть этого документа описывает:

* Как запустить локальный тестнет с одной валидирующей нодой, используя оба метода&#x20;
* Как запустить сервис Faucet и подключить его к вашему локальному тестнету

### Использование исходных файлов Aptos

1. Создайте новое ответвление и клонируйте репозиторий Aptos.

* Создайте ответвление репозитория Aptos Core, щелкнув **Fork** в правом верхнем углу данной страницы репозитория: <https://github.com/aptos-labs/aptos-core>.
* Клонируйте ответвление.

```
git clone https://github.com/<YOUR-GITHUB-USERID>/aptos-core
```

2\. Перейдите `cd` в каталог `aptos-core` .

```
cd aptos-core
```

3\. Запустите bash-скрипт `scripts/dev_setup.sh` , как показано ниже. Это подготовит вашу среду разработчика.

```
./scripts/dev_setup.sh
```

4\. Обновите текущую оболочку среды.

```
source ~/.cargo/env
```

5\. Теперь, когда ваша среда разработки готова, вы можете запустить тестнет. Прежде чем продолжить, обратите внимание на следующее:

* После выполнения команды запуска локального тестнета, данной ниже, ваш терминал перейдет в интерактивный режим с возможностью завершения тестовой сети. Следовательно, вам нужно будет открыть другой терминал оболочки для последующих шагов, описанных в этом разделе.
* После запуска приведенной ниже команды, вам нужно будет скопировать информацию `Config path` из вывода терминала для следующих шагов.

Чтобы запустить тестнет локально, выполните следующую команду:&#x20;

```
CARGO_NET_GIT_FETCH_WITH_CLI=true cargo run -p aptos-node -- --test
```

Ниже приведен пример частичного вывода. Сделайте заметку о `Config path` из выходных данных.

```
...
...
...

Completed generating configuration:
    Log file: "/private/var/folders/gn/m74t8ylx55z935q8wx035qn80000gn/T/b3adc18c144bfcc78a1541953893bc1c/validator.log"
    Config path: "/private/var/folders/gn/m74t8ylx55z935q8wx035qn80000gn/T/b3adc18c144bfcc78a1541953893bc1c/0/node.yaml"
    Aptos root key path: "/private/var/folders/gn/m74t8ylx55z935q8wx035qn80000gn/T/b3adc18c144bfcc78a1541953893bc1c/mint.key"
    Waypoint: 0:47e676b5fe38ebe2aec6053db7b3daa0b805693d6422e3475e46e89499464ecf
    ChainId: TESTING
    REST API endpoint: 0.0.0.0:8080
    FullNode network: /ip4/0.0.0.0/tcp/7180
Aptos is running, press ctrl-c to exit
```

**ПРИМЕЧАНИЕ:** Приведенная выше команда запускает локальный тестнет с одной валидирующей нодой. Команда запускает `aptos-node` только из реестра в состоянии генезиса. Если вы хотите повторно использовать состояние реестра, созданное предыдущим запуском `aptos-node`, используйте:

```
cargo run -p aptos-node -- --test --config <config-path>
```

### Подключение Faucet к тестнету

Faucets — это сервисы без сохранения состояния, которые можно запускать параллельно с тестнетом. Faucet — это способ создания тестовых монет Aptos, не имеющих реальной стоимости. Вы можете использовать Faucet, отправив запрос на создание монет и перевод их на указанный счет от вашего имени.

1. Убедитесь, что вы запустили локальный тестнет, как это описано в Шаге 5 выше.&#x20;
2. Откройте новый терминал оболочки.
3. Скопируйте *путь к корневому ключу Aptos* со своего терминала, где вы запустили тестовую сеть, и используйте его для замены  `mint-key-file-path` в приведенной ниже команде.
4. Выполните следующую команду, чтобы запустить Faucet:

```
cargo run --package aptos-faucet -- \
      --chain-id TESTING \
      --mint-key-file-path "/tmp/694173aa3bbe019499bbd5cf3fe0e2fc/mint.key" \
      --address 0.0.0.0 \
      --port 8000 \
      --server-url http://127.0.0.1:8080
```

Это запустит Faucet, работающий локально, без каких-либо ограничений на токены, которые можно запрашивать и создавать. Сервис Faucet будет так же доступен, как и тестнет, который вы запустили ранее.

### Использование Docker

В этом разделе описывается, как начать локальное тестирование с помощью Docker.

1. Установите [Docker](https://docs.docker.com/get-docker/) , включая [Docker-Compose](https://docs.docker.com/compose/install/).
2. Создайте каталог для локальной сети тестового валидатора и перейдите в него `cd`.
3. Загрузите файлы настройки YAML для:

* [Validator testnet docker compose](https://github.com/aptos-labs/aptos-core/blob/main/docker/compose/validator-testnet/docker-compose.yaml)&#x20;
* [Validator configuration](https://github.com/aptos-labs/aptos-core/blob/main/docker/compose/validator-testnet/validator_node_template.yaml)

4\. Запустите Docker Compose, запустив команду:

```
docker-compose up
```

### Пример

Последовательность команд для вышеуказанных Шагов со 2 по 4 показана ниже:

```
mkdir aptos_local_validator && cd aptos_local_validator
wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/validator-testnet/docker-compose.yaml
wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/validator-testnet/validator_node_template.yaml
docker-compose up
```

Это запустит и валидирующую ноду и Faucet сервис.

* Конечная точка REST валидатора будет доступна на`http://127.0.0.1:8080`
* Faucet доступен на `http://127.0.0.1:8000`

### Устранение ошибок

Поскольку программное обеспечение еще находится на ранних стадиях разработки, возможны критические изменения. Если программное обеспечение не запускается, выполните следующие действия:

1. Сначала запросите в Docker контейнеры и тома с помощью`docker container ls -a` and `docker volume ls`.
2. Затем удалите их, используя `docker container rm $id` and `docker volume rm $name`.
3. Альтернативно вы можете начать с нуля, очистив локальное docker-состояние, выполнив следующую команду:

```
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) && docker rmi $(docker images -q) && docker volume rm $(docker volume ls -q)
```

{% hint style="info" %}
**ПРИМЕЧАНИЕ**

Если вы собираетесь использовать свою тестовую сеть в течение длительного периода времени, вам следует привязать образы к определенному ID. Идентификаторы можно получить с помощью `docker container ls` и добавить в файл docker compose.
{% endhint %}

### Взаимодействие с локальным тестнетом

После запуска локального тестнета, вы увидите следующее:

```
Entering test mode, this should never be used in production!
Completed generating configuration:
        Log file: "/tmp/694173aa3bbe019499bbd5cf3fe0e2fc/validator.log"
        Config path: "/tmp/694173aa3bbe019499bbd5cf3fe0e2fc/0/node.yaml"
        Aptos root key path: "/tmp/694173aa3bbe019499bbd5cf3fe0e2fc/mint.key"
        Waypoint: 0:197bc8b76761622c2d2054d8bf93c1802fa0eb4bc55f0f3d4442878fdecc297f
        ChainId: TESTING
        REST API endpoint: 0.0.0.0:8080
        FullNode network: /ip4/0.0.0.0/tcp/7180

Aptos is running, press ctrl-c to exit
```

Используйте [Aptos CLI tool](https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos/README.md) для взаимодействия с локальным тестнетом. Приведенный выше результат выполнения содержит информацию, которую вы будете использовать для запуска [Aptos CLI tool](https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos/README.md).

* `Aptos root key path`: корневой ключ (известный также как mint или faucet key) контролирует аккаунт, который может чеканить токены. Доступен в папке docker compose с именем `aptos_root_key`.
* `Waypoint`: поддающаяся проверке контрольная точка блокчейна (доступна в папке docker compose с именем waypoint.txt)
* `REST endpoint`: конечная точка для REST сервиса, например: `http://127.0.0.1:8080`
* `ChainId`: ID цепи однозначно отличает эту сеть от других сетей блокчейна

### Следующие шаги

На этом этапе у вас будет специальный корневой аккаунт `0x1` , который может выполнять операцию чеканки. Дальнейшая работа:

* [Ваша первая транзакция](https://cr-nepos.gitbook.io/aptos-ru/rukovodstva-po-primeneniyu/vasha-pervaya-tranzakciya), чтобы научиться отправлять транзакции
* [Ваш первый модуль Move](https://cr-nepos.gitbook.io/aptos-ru/rukovodstva-po-primeneniyu/vash-pervyi-move-modul), чтобы научиться создавать модули Move
* [Взаимодействие с блокчейном Aptos](https://cr-nepos.gitbook.io/aptos-ru/gaidy/vzaimodeistvie-s-blokcheinom-aptos), чтобы узнать, как чеканить монеты
