Cudos Network — это специализированный блокчейн, предназначенный для обеспечения высокопроизводительных, без доверия, без разрешений облачных вычислений для всех.

Вы хотите начать проверку для CUDOS? Тогда вы попали в нужное место! Ниже приведено подробное пошаговое руководство по настройке собственного валидатора в CUDOS.

На этом этапе мы собираемся отклониться от официальной документации и перейти к CentOS.

Настройка среды предназначена для выполнения на всех хост-машинах. Требования к оборудованию можно найти здесь.

После того, как вы развернули хост-машину, выполните следующие действия.

Если вы только начали с этого учебника, начните с раскрутки валидатора.

Во-первых, нам нужно установить пару инструментов.

# Install Docker, Git and jQuery via the yum package manager.
$ sudo yum install docker git jq -y# Start the Docker daemon.
$ sudo service docker start# Install docker-compose by downloading the binary from the GitHub download archive.
$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# Make docker-compose executable for the current user.
$ chmod +x /usr/local/bin/docker-compose

Теперь давайте создадим рабочую область в каталоге $HOME и cd в нее.

$ mkdir ~/cudos
$ cd ~/cudos

Next, нам нужно клонировать CudosNode, CudosBuilders и CudosGravityBridge.

$ git clone --depth 1 --branch v0.2 https://github.com/CudoVentures/cudos-node.git CudosNode
$ git clone --depth 1 --branch v0.3  https://github.com/CudoVentures/cudos-builders.git CudosBuilders
$ git clone --depth 1 --branch v0.2 https://github.com/CudoVentures/cosmos-gravity-bridge.git CudosGravityBridge

Создайте образ docker для CudosBuilders.

$ cd ~/cudos/docker/binary-builder
$ sudo docker-compose --env-file binary-builder.arg -f binary-builder.yml -p cudos-binary-builder up --build --detach

Хорошо, пришло время перейти к мелочам. Настройка валидатора включает в себя настройку трех компонентов:

  • Валидатор CUDOS,который участвует в консенсусе по цепочке, голосуя и предлагая блоки, и который используется оркестратором для вызова против цепочки CUDOS
  • Gravity Bridge Orchestrator,который управляет потоком токенов между CUDOS и Ethereum
  • Полный узел Ethereum который используется оркестратором для выполнения своих вызовов против Ethereum

1.1) Настройка полного узла Ethereum

Во-первых, раскрутите новую хост-машину (см. Требования к оборудованиюEthereum

Кроме того, вы также можете использовать свой собственный полный узел Ethereum и в этом случае вы можете перейти к 1.2). Просто убедитесь, что вы не используете Infura.

Напоминание:Завершите «0) Настройка среды«, прежде чем продолжить выполнение следующих действий.

Запуск узла Ethereum довольно прост.

$ cd ~/cudos/CudosBuilders/docker/ethereum
$ sudo docker-compose -f ethereum-full.yml -p ethereum up --build --detach

Обратите внимание, что синхронизация блокчейна Rinkeby может занять часы / дни. Журналы можно просмотреть, выполнив следующую команду.

$ sudo docker logs -f ethereum

1.2) Настройка узла валидатора CUDOS

Во-первых, разверните новый хост-компьютер (см. требования к оборудованию «Узел проверки»). Мы собираемся инициализировать полный узел CUDOS на нем, который мы позже настроим, чтобы стать валидатором.

Напоминание:Завершите «0) Настройка среды«, прежде чем продолжить выполнение следующих действий.

# Navigate to the full-node directory of CudosBuilders.
$ cd ~/cudos/CudosBuilders/docker/full-node# Make a copy of the example full-node env file and open it with a text editor of your choice.
$ cp full-node.env.example full-node.client.testnet.public01.env
$ nano full-node.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
MONIKER=<Insert your validator moniker here>
SHOULD_USER_GLOBAL_PEERS=false# Initialize the full node.
$ sudo docker-compose --env-file full-node.client.testnet.public01.arg -f init-full-node.yml -p cudos-init-full-node-client-testnet-public-01 up --build

Если все прошло хорошо, должен быть каталог ~/cudos/CudosData.

$ ls ~/cudos
CudosBuilders  CudosData  CudosGravityBridge  CudosNode
                   /\
                   ||
     This directory should be there.

Давайте также убедимся, что все файлы были сгенерированы правильно.

$ ls ~/cudos/CudosData/cudos-data-full-node-client-testnet-public-01
config  data  tendermint.nodeid

Скопируйте и вставьте идентификатор узла в текстовый файл на локальном компьютере. Он понадобится вам в ближайшее время.

$ cat ~/cudos/CudosData/cudos-data-full-node-client-testnet-public-01/tendermint.nodeid

Пока выглядит хорошо. Теперь, чтобы получить одноранговые узлы, лучше всего развернуть узел sentry на другой хост-машине.

  • Повторите шаг «0) Настройка среды» на узле sentry.
  • Следуйте официальному руководству по настройке Sentry.
    На шаге 6 вам понадобится идентификатор узла валидатора из текстового файла, упомянутого выше, и общедоступный IP-адрес валидатора. Убедитесь, что порт 26656 открыт для входящих и исходящих подключений. На данный момент вам не нужно вводить никаких других одноранговых адресов, кроме ваших проверяющих.
  • Получите идентификатор узла часового, скопируйте и вставьте его в текстовый файл на локальном компьютере. Он понадобится вам в ближайшее время.
$ cat ~/cudos/CudosData/cudos-data-sentry-node-client-testnet-public-01/tendermint.nodeid
  • В идеале вы должны настроить по крайней мере два сторожевых узла для эффективной защиты от DDoS-атак. Просто повторите три шага выше на другом хост-компьютере.

Необязательно:настройка начального узла. Однако мы пропустим этот шаг в этом руководстве.

Теперь, когда мы настроили наши часовых, нам нужно добавить их в качестве одноранговых узлов в наш узел валидатора.

$ cd ~/cudos/CudosBuilders/docker/full-node
$ nano full-node.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
PERSISTENT_PEERS=<sentry1-node-id>@<sentry1-public.ip>:26656,<sentry2-node-id>@<sentry2-public.ip>:26656

Хорошо, пришло время запустить полный узел.

# Set the configuration.
$ sudo docker-compose --env-file full-node.client.testnet.public01.arg -f config-full-node.yml -p cudos-config-full-node-client-testnet-public-01 up --build# Start the full node.
sudo docker-compose --env-file full-node.client.testnet.public01.arg -f start-full-node.yml -p cudos-start-full-node-client-testnet-public-01 up --build --detach# Logs can be viewed by running the following command.
$ sudo docker logs -f cudos-start-full-node-client-testnet-public-01

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

# Wait for the output of this command to be 'false'.
$ sudo docker exec -ti cudos-start-full-node-client-testnet-public-01 cudos-noded status | jq '.SyncInfo.catching_up'# Check the progress by comparing the block height from the output of this command with the latest block height from the official block explorer.
$ sudo docker exec -ti cudos-start-full-node-client-testnet-public-01 cudos-noded status | jq '.SyncInfo.latest_block_height'

А пока мы можем создать аккаунт, который необходим для взаимодействия с блокчейном. Мы собираемся создать его с помощью веб-расширения Keplr. Пожалуйста, следуйте этому руководству.

Не забудьте создать резервную копию мнемонической фразы и хранить ее в надежном месте!

После того, как узел догнал, мы можем импортировать нашу учетную запись валидатора, которую мы только что создали в Keplr. Для этого нам нужно будет получить доступ к оболочке контейнера валидатора.

$ sudo docker exec -it cudos-start-full-node-client-testnet-public-01 bash

Затем, пожалуйста, выполните следующую команду, которая попросит вас ввести мнемоническую фразу.

$ cudos-noded keys add validator --recover --keyring-backend file

Чтобы проверить, был ли ключ успешно добавлен, используйте следующую команду, в которой должен быть указан ключ «validator».

$ cudos-noded keys list --keyring-backend file

Прежде чем мы сможем создать наш валидатор в цепочке, ему нужны некоторые токены, которые он может сделать ставку, чтобы он мог фактически стать валидатором и участвовать в консенсусе.

  • Для общедоступной тестовой сети следуйте этим инструкциям.
  • Для основной сети вот список мест, где можно купить CUDOS.

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

$ cudos-noded tx staking create-validator \
  --amount <STAKE> \
  --from validator \
  --pubkey $(cudos-noded tendermint show-validator) \
  --moniker <YOUR_MONIKER> \
  --chain-id <CHAIN_ID> \
  --commission-rate <COM_RATE> \
  --commission-max-rate <COM_MAX_RATE> \
  --commission-max-change-rate <COM_MAX_CHANGE_RATE> \
  --min-self-delegation 1 \
  --gas auto \
  --gas-prices 0.025acudos \
  --gas-adjustment 1.80 \
  --keyring-backend file \
  -y
  • <STAKE > должен быть не менее 10000000000000000000000acudos (=1 CUDOS)
  • <YOUR_MONIKER > должно совпадать с именем, указанным в ~/cudos/CudosBuilders/docker/full-node/full-node.client.testnet.public01.env
  • <CHAIN_ID должно > быть cudos-testnet-public для тестовой сети (TBD для mainnet)
  • <COM_RATE — > это процент комиссии, которую вы хотите взять со всех вознаграждений, т.е. 0,10 означает, что вы возьмете 10% от всех сгенерированных вознаграждений.
  • <COM_MAX_RATE > максимальная ставка комиссии, которую вы совершаете, т.е. 0.40 означает, что вы никогда не получите более 40% от всех полученных вознаграждений
  • <COM_MAX_CHANGE_RATE > максимальная ставка в процентах, что вы можете изменить свою комиссионную ставку в день, т.е. 0.20 означает, что в день вы можете либо увеличить, либо уменьшить свою комиссию на 20% вершин

Выполните команду и дождитесь ее обработки. Если вы видите хэш транзакции без получения ошибки, значит, вы успешно создали учетную запись валидатора! Вы можете скопировать хэш транзакции и взглянуть на него в обозревателе блоков.

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

$ cudos-noded q staking validators

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

1.3) Настройка оркестратора

Для оркестратора нам нужна другая учетная запись на машине валидатора. Создайте его в Keplr, создайте резервную копию мнемонической фразы и сохраните ее в надежном месте. Затем используйте следующую команду для импорта учетной записи orchestrator, которая попросит вас ввести мнемоническую фразу учетной записи orchestrator.

$ cudos-noded keys add orchestrator --recover --keyring-backend file

Чтобы проверить, был ли ключ успешно добавлен, используйте следующую команду, в которой должны быть указаны ключ «validator» и недавно добавленный ключ «orchestrator».

$ cudos-noded keys list --keyring-backend file

Для следующих шагов вам понадобится учетная запись Ethereum Пожалуйста, следуйте этому руководству о том, как установить и настроить Metamask, а также создать учетную запись. Как только у вас есть адрес Ethereum мы можем зарегистрировать оркестратор.

$ cudos-noded tx gravity set-orchestrator-address <VALIDATOR_ADDRESS> <ORCH_ADDRESS> <ETH_ADDRESS>
  • <VALIDATOR_ADDRESS адрес > оператора валидатора (cudosvaloper…). Его можно получить с помощью следующей команды.
$ cudos-noded keys show validator --bech val --keyring-backend file
  • <ORCH_ADDRESS адрес > оркестраторов (cudos…). Его можно получить с помощью следующей команды.
$ cudos-noded keys show orchestrator --keyring-backend file
  • <ETH_ADDRESS адрес > Ethereum который вы создали в Metamask (0x…).

После того, как вы зарегистрировали оркестратор, нам нужно настроить его.

$ cd ~/cudos/CudosBuilders/docker/orchestrator
$ cp orchestrator.env.example orchestrator.client.testnet.public01.env
$ nano orchestrator.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
ADDRESS_PREFIX="cudos"
FEES="<FEES>"
GRPC="http://<CUDOS_NODE_IP>:9090"
ETHRPC="http://<ETH_NODE_IP>:8545"
CONTRACT_ADDR="0xb22F2A4c231e69703FC524Eb2E3eb7B83C316F42"
COSMOS_ORCH_MNEMONIC="<ORCH_MNEMONIC>"
ETH_PRIV_KEY_HEX="<HEX_PRIV_KEY>"
  • <СБОРЫ > — это сборы, которые вам придется заплатить за каждую транзакцию моста, например, 100acudos.
  • <CUDOS_NODE_IP — > это общедоступный IP-адрес узла валидатора CUDOS.
  • <ETH_NODE_IP > является публичным IP-адресом полного узла Ethereum
  • <ORCH_MNEMONIC — > это мнемоническая фраза вашего оркестраторского аккаунта.
  • <ETH_PRIV_KEY_HEX > является шестнадцатеричное представление, если закрытый ключ учетной Ethereum без ведущего «0x». Пожалуйста, следуйте этому руководству, чтобы экспортировать закрытый ключ из Metamask.

Наконец, запустите оркестратор.

$ sudo docker-compose --env-file orchestrator.client.testnet.public01.arg -f orchestrator.release.yml -p cudos-orchestrator-client-testnet-public-01-release up --build --detach

Журналы можно просмотреть с помощью следующей команды.

$ sudo docker logs -f cudos-orchestrator-client-testnet-public-01-release

И это в значительной степени завершает его! Теперь вы запускаете узел валидатора в блокчейне CUDOS и оркестратор для моста передач токенов между Cosmos и Ethereum

Мы надеемся, что вы нашли это руководство полезным и оставьте нас с хлопком!

До следующего раза!

Подробнее:

Веб-сайт, Twitter, Telegram, YouTube, Discord, Medium, Подкаст