sum-node-start.sh
Обзор
sum-node-start.sh — это скрипт оболочки (shell script), предназначенный для запуска узла приложения sum-node. Основная функция скрипта — ожидание появления файла с конфигурацией контрактов (sum_task_contracts.json), извлечение адресов смарт-контрактов из этого файла и запуск процесса sum-node с соответствующими параметрами. Скрипт обеспечивает корректную инициализацию узла с необходимыми адресами контрактов и настройками подключения к RPC и API.
Подробное описание
Общая логика
Скрипт выводит сообщение о том, что ожидает файл
/deploy-data/sum_task_contracts.json.В цикле
untilпроверяется наличие файла. Если файл не найден, скрипт делает паузу в 2 секунды и повторяет проверку.После появления файла с помощью утилиты
jqпроисходит извлечение двух адресов контрактов:SUMTASK_ADDRESS— адрес первого контракта из массиваsumTasks.SETTLEMENT_SUMTASK_ADDRESS— адрес второго контракта из массиваsumTasks.
Выводятся адреса для подтверждения.
Запускается исполняемый файл
/app/sum-nodeс параметрами:--evm-rpc-urls— список RPC URL для подключения к Ethereum Virtual Machine (EVM).--relay-api-url— URL API ретранслятора, передаваемый первым аргументом скрипта.--contract-addresses— адреса контрактов, извлечённые из JSON.--private-key— приватный ключ пользователя, передаваемый вторым аргументом скрипта.--log-level— уровень логирования, установленный вinfo.
Детальный разбор
Используемые команды и параметры
echo— выводит сообщения в консоль.until [ -f /deploy-data/sum_task_contracts.json ]; do sleep 2; done — цикл ожидания появления файла.
jq -r '.sumTasks[0].addr' /deploy-data/sum_task_contracts.json — извлекает первый адрес из массива
sumTasksв JSON.jq -r '.sumTasks[1].addr' /deploy-data/sum_task_contracts.json — извлекает второй адрес из массива.
exec /app/sum-node ...— заменяет текущий процесс оболочки на процессsum-nodeс указанными параметрами.
Параметры запуска sum-node
--evm-rpc-urls http://anvil:8545,http://anvil-settlement:8546
Перечисляет два RPC URL, по которымsum-nodeбудет обращаться к блокчейнам EVM и settlement EVM.--relay-api-url "$1"
URL API ретранслятора, переданный первым аргументом скрипта.--contract-addresses "$SUMTASK_ADDRESS,$SETTLEMENT_SUMTASK_ADDRESS"
Адреса контрактов, полученные из файла конфигурации.--private-key "$2"
Приватный ключ для работы с контрактами, переданный вторым аргументом.--log-level info
Уровень логирования — информационный.
Пример использования
./sum-node-start.sh https://relay-api.example.com abc123privatekey
В данном примере:
https://relay-api.example.com— URL API ретранслятора.abc123privatekey— приватный ключ, используемый узлом.
Скрипт дождётся появления файла /deploy-data/sum_task_contracts.json, извлечёт адреса контрактов и запустит sum-node с указанными параметрами.
Взаимодействие с другими частями системы
Файл
/deploy-data/sum_task_contracts.json
Скрипт зависит от наличия этого файла, который содержит адреса смарт-контрактов. Обычно этот файл создаётся другим компонентом системы, отвечающим за деплой контрактов.sum-node
Основное приложение, которое запускает этот скрипт. Оно взаимодействует с EVM-совместимыми блокчейнами через RPC, а также с API ретранслятора.RPC-сервисы (
anvil:8545иanvil-settlement:8546)
Локальные или сетевые узлы EVM для выполнения транзакций и взаимодействия с контрактами.
Таким образом, скрипт служит мостом между этапом деплоя контрактов и запуском узла приложения с корректными параметрами.
Важные детали реализации
Использование бесконечного цикла ожидания файла гарантирует, что узел не запустится до тех пор, пока конфигурация не будет готова.
Параметры запуска передаются через аргументы скрипта, что позволяет гибко использовать его в разных средах.
Команда
execзаменяет текущий процесс скрипта наsum-node, что упрощает управление процессами и экономит ресурсы.
Диаграмма структуры и потока выполнения
flowchart TD
A[Начало скрипта] --> B[Ожидание файла sum_task_contracts.json]
B -->|Файл найден| C[Извлечение SUMTASK_ADDRESS]
C --> D[Извлечение SETTLEMENT_SUMTASK_ADDRESS]
D --> E[Вывод адресов контрактов]
E --> F[Запуск процесса sum-node с параметрами]
F --> G[sum-node работает]
Итог
sum-node-start.sh — это вспомогательный скрипт, обеспечивающий корректный старт ноды sum-node после успешного деплоя смарт-контрактов. Он выполняет ожидание конфигурационного файла, парсит необходимые данные и запускает приложение с нужными параметрами, что делает его важной частью запуска инфраструктуры узла в проекте.