Поднимаем сразу обе ноды (beacon и ecdsa) на одной VPS.

Nagayka
6 min readJul 30, 2020

--

UPD 08.08.2020

UPD 03.09.2020

Вводная часть

Доброго дня друзья.

В этом этом мануале расписано, каким образом запустить обе ноды (Random Beacon и Ecsdsa) на одной VPS.

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

Таким образом, я потратил несколько дней и самостоятельно, разбираясь во всех нюансах всё таки запустился)

Начну с самого начала, возможно по данному гайду будут работать не только те, у кого не выходит настроить VPS, хотя основные отличия от других мануалов, это порядок команд и конфигурационные файлы.

P.S За всё время моих «разборов» был 18 раз отформатирован жесткий диск.

Минимальные технические требования

· VPS — 4 vCPU, 4ГБ ОЗУ, 1 ГБ HDD

· OC — Linux Ubuntu 18.04 Bionic

· SSH Клиент — Putty, MobaXterm, mRemoteNG(кому, что понравится)

· Google Chrome c расширением MetaMask

Ethereum кошелек

Переходим по ссылке https://myetherwallet.com

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

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

В скачанном файле нужно сразу же изменить имя на «keep_wallet.json»

Импорт файла в MetaMask

При входе в MetaMask , сразу же меняем сеть на «Ropsten» и импортируем наш файл «keep_wallet.json»

Выбираем тип «JSON файл»

Выбираем наш файл «keep_wallet.json»

И завершаем все вводом пароля, который мы указывали при скачивании файлы кошелька.

Получаем тест токены

Копируем адрес нашего импортированного кошелька, переходим по ссылке «https://faucet.ropsten.be/»

Вводим свой скопированный адрес ETH и жмём на кнопку.

Получаем тестовые токены KEEP.

Переходим по ссылке, меняя значение после «URL =» на ваш адрес: https://us-central1-keep-test-f3e0.cloudfunctions.net/keep-faucet-ropsten?account= ваш адрес ETH.

Делегируем тестовые токены KEEP

Переходим по ссылке https://dashboard.test.keep.network/tokens

Соединяемся с сетью KEEP через MetaMask.

Нас перебрасывает в dashboard.

Вводим 300 000 токенов.

Заполняем поля кошельков.

! Во всех 3х полях используем одинаковые значения вашего кошелька !

После того как заполнены все поля, жмём на кнопку ниже — «delegate stake».

Далее перейдите по ссылке — https://dashboard.test.keep.network/applications/random-beacon

! Внимание, долгая загрузка, придется подождать 2–5 минут !

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

Далее, переходим по ссылке — https://dashboard.test.keep.network/applications/tbtc

Аналогично первично получаем экран загрузки и ждём 2–5 минут.

После этого прожимаем кнопки авторизации.

И далее добавляем в нижней панели 0.1 ETH.

Регистрация в api сервисе INFURA

Переходим по ссылке https://infura.io/register.

Регистрируем аккаунт.

Входим и создаём проект для beacon ноды.

Далее, создаём такой-же проект но уже для ecdsa ноды.

После создания двух проектов, нужно перейти в настройки каждого проекта и выписать ID проекта.

Настройка VPS

Войдите на VPS при помощи ssh клиента.

Открываем порты.

sudo ufw allow 22/tcp
sudo ufw allow 3919/tcp

sudo ufw allow 3920/tcp
sudo ufw enable

После последней команды в строке пишем y и нажимаем enter.

Устанавливаем Docker:

sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt install docker.io curl -y
sudo systemctl start docker
sudo systemctl enable docker

Создаём папки для Beacon и Ecdsa ноды

mkdir -p $HOME/keep-beacon/config
mkdir -p $HOME/keep-beacon/keystore
mkdir -p $HOME/keep-beacon/persistence

mkdir -p $HOME/keep-ecdsa/config
mkdir -p $HOME/keep-ecdsa/keystore
mkdir -p $HOME/keep-ecdsa/persistence

Создаём конфиг для Beacon ноды

Выполняем команду

cat <<EOF >>$HOME/keep-beacon/config/config.toml

В строку вставляем

  • ВНИМАТЕЛЬНО ЗАПОЛНЯЕМ СТРОКИ С ID INFURA И КОШЕЛЬКОМ
# Ethereum host connection info.
[ethereum]
URL = "wss://ropsten.infura.io/ws/v3/Ваш ID Infura Beacon"
URLRPC = "https://ropsten.infura.io/v3/Ваш ID Infura Beacon"

# Keep operator Ethereum account.
[ethereum.account]
Address = "Ваш кошелек"
KeyFile = "/mnt/keystore/keep_wallet.json"

# Keep contract addresses configuration.
[ethereum.ContractAddresses]
KeepRandomBeaconOperator = "0xC8337a94a50d16191513dEF4D1e61A6886BF410f"
TokenStaking = "0x234d2182B29c6a64ce3ab6940037b5C8FdAB608e"
KeepRandomBeaconService = "0x6c04499B595efdc28CdbEd3f9ed2E83d7dCCC717"

# Keep network configuration.
[LibP2P]
Peers = ["/dns4/bootstrap-1.core.keep.test.boar.network/tcp/3001/ipfs/16Uiu2HAkuTUKNh6HkfvWBEkftZbqZHPHi3Kak5ZUygAxvsdQ2UgG",
"/dns4/bootstrap-2.core.keep.test.boar.network/tcp/3001/ipfs/16Uiu2HAmQirGruZBvtbLHr5SDebsYGcq6Djw7ijF3gnkqsdQs3wK","/dns4/bootstrap-3.test.keep.network/tcp/3919/ipfs/16Uiu2HAm8KJX32kr3eYUhDuzwTucSfAfspnjnXNf9veVhB12t6Vf","/dns4/bootstrap-2.test.keep.network/tcp/3919/ipfs/16Uiu2HAmNNuCp45z5bgB8KiTHv1vHTNAVbBgxxtTFGAndageo9Dp"]
Port = 3919
AnnouncedAddresses = ["/ip4/$SERVER_IP/tcp/3920"]

# Storage is encrypted
[Storage]
DataDir = "/mnt/persistence"
EOF

Далее выполняем команду.

cat <<EOF >>$HOME/keep-beacon/keystore/keep_wallet.json

После этого, находим наш импортированный файл keep_wallet.json, открываем его текстовым редактором, текст копируем и вставляем в клиент. Жмем ENTER.

В следующую строчку прописываем “EOF”, жмём ENTER.

Создаём конфиг файл для ECDSA ноды

Выполняем команду

cat <<EOF >>$HOME/keep-ecdsa/config/config.toml

В строку вставляем

[ethereum]
URL = "wss://ropsten.infura.io/ws/v3/ВАШ ID INFURA ECDSA"
URLRPC = "https://ropsten.infura.io/v3/ВАШ ID INFURA ECDSA"
# Keep operator Ethereum account.
[ethereum.account]
Address = "ВАШ КОШЕЛЕК"
KeyFile = "/mnt/keep-ecdsa/keystore/keep_wallet.json"
# Addresses of contracts deployed on ethereum blockchain.
[ethereum.ContractAddresses]
BondedECDSAKeepFactory = "0x9EcCf03dFBDa6A5E50d7aBA14e0c60c2F6c575E6"
# Addresses of applications approved by the operator.
[SanctionedApplications]
Addresses = [
"0xc3f96306eDabACEa249D2D22Ec65697f38c6Da69"
]
# Keep network configuration.
[LibP2P]
Peers = ["/dns4/bootstrap-1.ecdsa.keep.test.boar.network/tcp/4001/ipfs/16Uiu2HAmPFXDaeGWtnzd8s39NsaQguoWtKi77834A6xwYqeicq6N",
"/dns4/ecdsa-2.test.keep.network/tcp/3919/ipfs/16Uiu2HAmNNuCp45z5bgB8KiTHv1vHTNAVbBgxxtTFGAndageo9Dp",
"/dns4/ecdsa-3.test.keep.network/tcp/3919/ipfs/16Uiu2HAm8KJX32kr3eYUhDuzwTucSfAfspnjnXNf9veVhB12t6Vf"]
Port = 3919
# Override the nodeРҐs default addresses announced in the network
AnnouncedAddresses = ["/ip4/185.93.108.185/tcp/5678"]
# Storage is encrypted
[Storage]
DataDir = "/mnt/keep-ecdsa/persistence"
[TSS]
EOF

Далее выполняем команду.

cat <<EOF >>$HOME/keep-ecdsa/keystore/keep_wallet.json

После этого, находим наш импортированный файл keep_wallet.json, открываем его текстовым редактором, текст копируем и вставляем в клиент. Жмем ENTER.

В следующую строчку прописываем “EOF”, жмём ENTER.

Создадим переменную пароля от JSON файла:

export KEEP_CLIENT_ETHEREUM_PASSWORD=”Ваш пароль от JSON файла”

Запускам ноду Beacon

sudo docker run -dit \
--restart always \
--volume $HOME/keep-beacon:/mnt \
--env KEEP_ETHEREUM_PASSWORD=$KEEP_CLIENT_ETHEREUM_PASSWORD \
--env LOG_LEVEL=debug \
--name keep-beacon \
-p 3920:3919 \
keepnetwork/keep-client:v1.3.0-rc.4 --config /mnt/config/config.toml start

Проверяем лог запуска

sudo docker logs keep-beacon -f  --tail="100"

Если все работает, то выплывет такое изображение:

Если будет ошибка, то обращайтесь в телеграмм @nagaykka,наша команда постарается Вам помочь.

Запускам ноду Ecdsa

sudo docker run -d \
--restart always \
--entrypoint /usr/local/bin/keep-ecdsa \
--volume $HOME/keep-ecdsa:/mnt/keep-ecdsa \
--env KEEP_ETHEREUM_PASSWORD=$KEEP_CLIENT_ETHEREUM_PASSWORD \
--env LOG_LEVEL=debug \
--name keep-ecdsa \
-p 3919:3919 \
keepnetwork/keep-ecdsa-client:v1.2.0-rc.5 \
--config /mnt/keep-ecdsa/config/config.toml start

Проверяем лог запуска

sudo docker logs keep-ecdsa -f  --tail="100"

Если все работает, то выплывет такое изображение:

Спасибо за внимание!

Если будет ошибка, то обращайтесь в телеграмм @nagaykka, наша команда постарается Вам помочь.

--

--