Запуск валидатора используя GCP

ПРИМЕЧАНИЕ

В этом руководстве предполагается, что вы уже настроили учетную запись GCP и создали новый проект для развертывания узла Aptos. Если вы не знакомы с GCP (Google Cloud Platform), ознакомьтесь с этим разделом «Предварительные требования» для настройки учетной записи GCP.

ВАЖНО

Установите следующие предварительные условия, если вы этого не сделали:

  1. Создайте рабочий каталог для вашей конфигурации.

  • Выберите имя рабочей области, например,testnet. Примечание: это определит имя рабочей области Terraform, которое, в свою очередь, будет использоваться для формирования имен ресурсов.

export WORKSPACE=testnet
  • Создайте каталог для рабочей области

mkdir -p ~/$WORKSPACE

2. Создайте сегмент хранилища для хранения состояния Terraform в Google Cloud Storage. Используйте GCP UI или команду Google Cloud Storage, чтобы создать корзину. Имя корзины должно быть уникальным. См. документацию Google Cloud Storage здесь: https://cloud.google.com/storage/docs/creating-buckets#prereq-cli

gsutil mb gs://BUCKET_NAME
# for example
gsutil mb gs://<project-name>-aptos-terraform-dev

3. Создайте в вашем рабочем каталоге файл Terraform под названием main.tf:

cd ~/$WORKSPACE
touch main.tf

4. Измените файл main.tf для настройки Terraform, создайте полную ноду из модуля Terraform. Пример заполнения для main.tf:

terraform {
  required_version = "~> 1.1.0"
  backend "gcs" {
    bucket = "BUCKET_NAME" # bucket name created in step 2
    prefix = "state/aptos-node"
  }
}

module "aptos-node" {
  # download Terraform module from aptos-labs/aptos-core repo
  source        = "github.com/aptos-labs/aptos-core.git//terraform/aptos-node/gcp?ref=testnet"
  region        = "us-central1"  # Specify the region
  zone          = "c"            # Specify the zone suffix
  project       = "<GCP Project ID>" # Specify your GCP project ID
  era           = 1              # bump era number to wipe the chain
  chain_id      = 23
  image_tag     = "testnet" # Specify the docker image tag to use
  validator_name = "<Name of Your Validator, no space, e.g. aptosbot>"
}

Полные параметры настройки см. в файле переменных здесь и в helm values.

5. Инициализируйте Terraform в том же каталоге, где и ваш файл main.tf

terraform init

Это загрузит для вас все зависимости Terraform, в папку .terraform в вашем текущем рабочем каталоге.

6. Создайте новую рабочую область Terraform, чтобы изолировать свои среды:

terraform workspace new $WORKSPACE
# This command will list all workspaces
terraform workspace list

7. Примените конфигурацию

terraform apply

Это может занять некоторое время (10–20 минут), Terraform создаст все ресурсы в вашей облачной учетной записи.

8. После завершения применения Terraform вы можете проверить, созданы ли эти ресурсы:

  • gcloud container clusters get-credentials aptos-$WORKSPACE --zone <region/zone> --project <project> , чтобы настроить доступ для кластера k8s

  • kubectl get pods должен иметь haproxy, валидатора и полную ноду. С ожидающими проверки валидатором и полной нодой (требуются дальнейшие действия на более поздних этапах) pending

  • kubectl get svc должен иметь validator-lb и fullnode-lb, с внешним IP-адресом, которым вы можете поделиться позже для подключения

9. Получите информацию об IP-адресе вашей ноды:

export VALIDATOR_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-validator-lb --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"

export FULLNODE_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-fullnode-lb --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"

10. Сгенерируйте пары ключей (ключ владельца ноды, консенсус-ключ и сетевой ключ) в вашем рабочем каталоге.

cd $WORKSPACE
aptos genesis generate-keys --output-dir .

Таким образом, будут созданы три файла private-keys.yaml, validator-identity.yaml, validator-full-node-identity.yaml . ВАЖНО: сделайте резервную копию файлов ваших ключей в безопасном месте. Эти файлы важны для вас, чтобы установить право собственности на вашу ноду, вы также будете использовать эту информацию, чтобы позже получить свое вознаграждение, если будете соответствовать требованиям. Никогда не делитесь этими ключами с кем-либо еще.

11. Настройте информацию о валидаторе. Это вся информация, которая вам понадобится для регистрации на сайте нашего сообщества позже.

aptos genesis set-validator-configuration \
    --keys-dir ~/$WORKSPACE 
    --local-repository-dir ~/$WORKSPACE 
    --username <pick a username for your node> 
    --validator-host $VALIDATOR_ADDRESS:6180 
    --full-node-host $FULLNODE_ADDRESS:6182

Это создаст YAML файл в вашем рабочем каталоге с вашим именем пользователя, например, aptosbot.yaml. Это будет выглядеть как:

---
account_address: 7410973313fd0b5c69560fd8cd9c4aaeef873f869d292d1bb94b1872e737d64f
consensus_key: "0x4e6323a4692866d54316f3b08493f161746fda4daaacb6f0a04ec36b6160fdce"
account_key: "0x83f090aee4525052f3b504805c2a0b1d37553d611129289ede2fc9ca5f6aed3c"
network_key: "0xa06381a17b090b8db5ffef97c6e861baad94a1b0e3210e6309de84c15337811d"
validator_host:
  host: 35.232.235.205
  port: 6180
full_node_host:
  host: 34.135.169.144
  port: 6182
stake_amount: 1

12. Создайте файл макета YAML, который определяет узел в validatorSet. Для тестового режима мы можем создать генезис блоб, содержащий только одну ноду. Примечание: этот шаг необходим только для запуска ноды в тестовом режиме, для дальнейшего использования он будет генерироваться Aptos Labs.

vi layout.yaml

Добавьте корневой ключ, имя пользователя ноды и chain_id в файлеlayout.yaml , например:

---
root_key: "0x5243ca72b0766d9e9cbf2debf6153443b01a1e0e6d086c7ea206eaf6f8043956"
users:
  - <validator_name from step 4>
chain_id: 23

13. Загрузите байт-код AptosFramework Move в папку с именемframework. Примечание: этот шаг необходим только для запуска ноды в тестовом режиме, для дальнейшего использования он будет генерироваться Aptos Labs.

ДЛЯ ИНФОРМАЦИИ

Загрузите Aptos Framework со страницы релиза: https://github.com/aptos-labs/aptos-core/releases/tag/aptos-framework-v0.1.0

wget https://github.com/aptos-labs/aptos-core/releases/download/aptos-framework-v0.1.0/framework.zip
unzip framework.zip

Теперь у вас есть папка с именемframework, которая содержит байт-код Move в формате .mv.

14. Скомпилируйте генезис блоб и путевую точку. Примечание: этот шаг необходим только для запуска ноды в тестовом режиме, для дальнейшего использования он будет генерироваться Aptos Labs.

aptos genesis generate-genesis 
    --local-repository-dir ~/$WORKSPACE 
    --output-dir ~/$WORKSPACE

Это создаст в вашем рабочем каталоге два файлаgenesis.blob and waypoint.txt .

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

  • private-keys.yaml персональные ключи для владельца аккаунта, консенсуса и сети

  • validator-identity.yaml персональные ключи для настройки идентификации валидатора

  • validator-full-node-identity.yaml персональные ключи для настройки идентификации валидатора полной ноды

  • <username>.yaml информация об обеих нодах валидирующей/полной

  • layout.yaml файл макета для определения корневого ключа, пользователя валидатора и ID цепи

  • framework папка, содержащая весь байт-код move для AptosFramework.

  • waypoint.txt путевая точка транзакции генезиса

  • genesis.blob бинарный генезис файл, содержащий всю информацию о фреймворке, validatorSet и многом другом.

16. Вставьтеgenesis.blob, waypoint.txt и идентификационные файлы как секретные в кластер k8s.

kubectl create secret generic ${WORKSPACE}-aptos-node-genesis-e1 \
    --from-file=genesis.blob=genesis.blob \
    --from-file=waypoint.txt=waypoint.txt \
    --from-file=validator-identity.yaml=validator-identity.yaml \
    --from-file=validator-full-node-identity.yaml=validator-full-node-identity.yaml

ПРИМЕЧАНИЕ:

Суффикс -e1 относится к порядковому номеру эры. Если вы изменили порядковый номер эры, убедитесь, что он совпадает при создании секрета.

17. Проверьте все запущенные модули.

kubectl get pods

NAME                                        READY   STATUS    RESTARTS   AGE
node1-aptos-node-fullnode-e9-0              1/1     Running   0          4h31m
node1-aptos-node-haproxy-7cc4c5f74c-l4l6n   1/1     Running   0          4h40m
node1-aptos-node-validator-0                1/1     Running   0          4h30m

Вы успешно завершили настройку своей ноды в тестовом режиме. Теперь вы можете перейти на веб-сайт сообщества Aptos для регистрации.

Last updated