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

Оракулы — это потоки данных, которые приносят данные из источников данных вне блокчейна (вне цепочки) и помещают их в цепочку блоков (в сети) для использования смарт-контрактов. Это необходимо, потому что смарт-контракты, работающие на Ethereum, не могут получить доступ к информации, хранящейся за пределами сети блокчейна.
Ладно, какие там оракулы?
Оракулы могут быть централизованными и децентрализованными. Централизованные оракулы контролируются одним человеком и, чаще всего, могут располагаться на одном сервере. Децентрализованные оракулы состоят из нескольких серверов, контролируемых разными организациями, которые, в свою очередь, принимают общее решение оракула на основе консенсуса.
Самая популярная сеть оракулов — Chainlink . Я расскажу вам, как развернуть ваш оракул. Начнем с установки узла в этой статье.
Децентрализованные сети оракулов Chainlink обеспечивают защищенные от несанкционированного доступа входы, выходы и вычисления для поддержки расширенных смарт-контрактов в любой цепочке блоков.
Чтобы запустить узел, вы можете использовать его на своем компьютере для локального тестирования или запустить производственную версию на облачном сервере. В этом гайде я рассмотрю вариант запуска ноды на VPS.
Я создал дроплет DigitalOcean и кластер базы данных для PostgreSQL.

Для узла 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

Создадим файл окружения и укажем все необходимые переменные:
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 оператора и пароль, указанные выше.

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

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