Краткое руководство по запуску ноды Chainlink

Nov 28 2022
Что такое оракул в блокчейне?
Оракулы — это потоки данных, которые приносят данные из источников данных вне блокчейна (вне цепочки) и помещают их в цепочку блоков (в сети) для использования смарт-контрактов. Это необходимо, потому что смарт-контракты, работающие на Ethereum, не могут получить доступ к информации, хранящейся за пределами сети блокчейна.
Исходное изображение от Shubham Dhage

Оракулы — это потоки данных, которые приносят данные из источников данных вне блокчейна (вне цепочки) и помещают их в цепочку блоков (в сети) для использования смарт-контрактов. Это необходимо, потому что смарт-контракты, работающие на Ethereum, не могут получить доступ к информации, хранящейся за пределами сети блокчейна.

Ладно, какие там оракулы?

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

Самая популярная сеть оракулов — Chainlink . Я расскажу вам, как развернуть ваш оракул. Начнем с установки узла в этой статье.

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

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

Я создал дроплет DigitalOcean и кластер базы данных для PostgreSQL.

Приборная панель DigitalOcean

Для узла Chainlink рекомендует следующие системные требования:

  • Минимум: чтобы начать работу с узлом Chainlink, вам понадобится машина как минимум с 2 ядрами и 4 ГБ оперативной памяти.
  • Рекомендуется: требования для запуска узла Chainlink масштабируются по мере увеличения количества заданий, которые обслуживает ваш узел. Для узлов с более чем 100 заданиями вам потребуется не менее 4 ядер и 8 ГБ ОЗУ.
  • Минимум: не менее 2 ядер, 4 ГБ ОЗУ и 100 ГБ памяти.
  • Рекомендуется: для поддержки более 100 заданий серверу базы данных потребуется не менее 4 ядер, 16 ГБ ОЗУ и 100 ГБ хранилища.

curl -sSL https://get.docker.com/ | sh
sudo systemctl start docker
sudo usermod -aG docker $USER
exit
# log in again

mkdir ~/.chainlink

Я буду запускать ноду для основной сети Ethereum. Поэтому я укажу параметр ETH_CHAIN_ID=1 . Чтобы узнать, чей ID в вашем случае, вам нужно найти его на сайте chainlist.org

Пример для основной сети Ethereum

Создадим файл окружения и укажем все необходимые переменные:

echo "ROOT=/chainlink
LOG_LEVEL=debug
ETH_CHAIN_ID=1
CHAINLINK_TLS_PORT=0
SECURE_COOKIES=false
ALLOW_ORIGINS=*" > ~/.chainlink/.env

Кроме того, нам нужен клиент Ethereum, мы можем запустить его локально или использовать сторонние сервисы, такие как Alchemy , Infura , QuikNode , Chainstack , Moralis .

Я предпочитаю использовать Alchemy из-за удобных тарифных комиссий с высокими лимитами, быстрой отзывчивостью ноды и информативным дашбордом.

Цены на алхимию

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

Окно создания приложения в Алхимии

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

Панель управления алхимией

В настройках нужно найти ссылку: wss://<URL>

Добавим подключение к узлу Ethereum в конфиг Chainlink:

echo "ETH_URL=wss://<URL>" >> ~/.chainlink/.env

Если вы тестируете, вы можете добавить ?sslmode=disableв конец URL. Однако вы никогда не должны делать это на рабочем узле.

Шаблон строки подключения:

postgresql://$USERNAME:$PASSWORD@$SERVER:$PORT/$DATABASE

echo "DATABASE_URL=postgresql://$USERNAME:$PASSWORD@$SERVER:$PORT/$DATABASE" >> ~/.chainlink/.env

Текущая версия на момент написания — 1.10.0. Посмотреть последнюю актуальную версию можно по ссылке .

Если нода запускается из-под пользователя root, следует выбирать только корневые версии образов.

Чтобы изменить версию, замените параметр на нужную версию:

смарт-контракт/ссылка на цепочку:<версия>

В моем случае, например, я буду запускать корневую версию. Для этого я буду использовать следующую команду:

cd ~/.chainlink && docker run -p 6688:6688 -v ~/.chainlink:/chainlink -it --env-file=.env smartcontract/chainlink:1.10.0-root local n

      
                

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

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

Сохраните E-mail оператора:

echo "[email protected]" > ~/.chainlink/.api

echo "password" >> ~/.chainlink/.api

echo "my_wallet_password" > ~/.chainlink/.password

cd ~/.chainlink && docker run --restart=always  -p 6688:6688 -d --name chainlink -v ~/.chainlink:/chainlink -it --env-file=.env smartcontract/chainlink:1.10.0-root local n -p /chainlink/.password

Отлично, нода запущена, теперь мы хотели бы подключиться к ней с локального устройства. Для этого нужно создать SSH-туннель к серверу с узлом.

ssh <USERNAME>@<IP> -L 6688:localhost:6688 -N

Оставим вкладку терминала открытой и откроем и кликнем по ссылке в браузере:http://localhost:6688/

Введите e-mail оператора и пароль, указанные выше.

Пользовательский интерфейс оператора Chainlink

Отлично, все настроено успешно!

Пользовательский интерфейс оператора Chainlink

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

В следующей статье я создал руководство по развертыванию оракула и подключению его к ноде.

Для более конкретной настройки с безопасным доступом к операторскому интерфейсу и производительностью работы оракула рекомендую прочитать следующие ссылки: