March 15, 2022

Установка ноды StarkNet

Гайд подготовлен телеграм каналом Поток ❤️

StarkNetэто децентрализованный ZK-Rollup без разрешений. Он работает как сеть L2 над Ethereum. Топ фонды на борту: Paradigm, Sequoia, Three Arrows Capital, Polychain, Alameda Resaerch, Coinbase Ventures, Intel и сам VITALIK BUTERIN.

Нода ОЧЕНЬ нетребовательна, поэтому поставить ее можно будет на очень дешевом сервере или даже фоном на своем ПК.

ИНФА ПО АПДЕЙТУ НОДЫ, КТО СТАВИТ ВПЕРВЫЕ, ПРОПУСТИТЕ ЭТУ ИНФУ

Открываем сервер и по очереди прописываем следующие команды:

screen -s myscreen

Нажать ctrl+c потом CTRL+A+d

cd pathfinder

git fetch

git checkout v0.1.8-alpha

git clone --branch v0.1.8-alpha https://github.com/eqlabs/pathfinder.git

screen -s myscreen

cd $HOME/pathfinder/py

python3 -m venv .venv

source .venv/bin/activate

PIP_REQUIRE_VIRTUALENV=true pip install -r requirements-dev.txt

cargo build --release --bin pathfinder

(xxxxx - апи кей из алчеми) cargo run --release --bin pathfinder -- --ethereum.url https://eth-mainnet.alchemyapi.io/v2/xxxxxx

Не забудте потом обратно выйти через CTRL+A+d

Дисклеймер

Авторы гайда — не профессиональные нодоводы, поэтому, если возникают технические трудности, то лучше спросить о них в дискорде проекта.

Тем не менее, на момент написания гайда с теми настройками и очередностью команд все работало прекрасно.

Шаг 1. Создание и настройка сервера

Для начала нам потребуется сервер Ubuntu 20.04 как в старой рекламе Эльдорадо — 2 ядра 2 гига (буквально) и 100 ГБ дискового пространства.

  • Покупал на Macloud (вы можете выбрать любой другой сервис), если убрать резервное копирование, то обойдется 10$ в месяц. Вот характеристики наглядно:
Конфигурация сервера
  • Устанавливаем PuTTY — программа, которая потребуется для подключения к серверу. Скачать с официального сайта можно здесь.
  • На сайте, где покупали сервер, берем данные для входа:
Данные для входа
  • В PuTTY вбиваем IP для входа на сервер в строку Host name (or ip adress) и, ничего больше не меняя, жмем Open
  • В открывшейся консоли пишем root, затем жмем enter, сервер запросит пароль.
  • Его мы берем на сайте хоста (см. скрин выше), копируем, затем переходим обратно в консоль, жмем правую кнопку мыши (правая кнопка мыши на линуксе заменяет ctrl+v) и нажимаем enter
здесь я перестал замазывать айпишник, потому что мне стало лень
  • Прописываем (а лучше копируем, чтобы не ошибиться) по очереди следующие команды:

sudo apt update

sudo apt full-upgrade -y

  • Ждем полной загрузки, по итогу должно получиться примерно следующее:

Шаг 2. Устанавливаем все необходимое

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

  • Установим pip:

sudo apt install -y python3-pip

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

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

  • Затем

sudo apt-get install libgmp-dev

(при выполнении этой команды запросят подтверждение, напишите y и нажмите enter)

  • Потом

pip3 install fastecdsa

  • И наконец

sudo apt-get install -y pkg-config

Шаг 3. Установка Rust.

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

  • Запускаем по очереди следующие команды:

apt install curl -y

  • Затем

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Когда скрипт остановится и появится выбор, пишем 1 и жмем enter

  • Потом

sudo apt install cargo -y

  • Теперь перезагрузите сервер командой или через панель управления сайта, где арендовали сервер.
  • После перезагрузки сервера, залогинтесь в PuTTY заново.
  • Пропишите следующую команду:

rustup update stable

Должно получиться примерно следующее:

Шаг 4. Клонируем репозиторий с github

  • Как и в предыдущих шагах, по очереди прописываем команды.

apt install git -y

  • Затем

Внимание! Со временем будут появляться новые версии, поэтому вместо v0.1.7-alpha, нужно будет прописать что-то другое. Проверить актуальную версию можно здесь.

git clone --branch v0.1.7-alpha https://github.com/eqlabs/pathfinder.git

По итогу у нас должно получиться следующее:

Шаг 5. Создание виртуальной среды

  • Снова делаем команды по очереди. Каждая строчка - отдельная команда.

sudo apt install python3.8-venv

upd. Две команды ниже появились после доработки. Без них при закрытии PuTTY нода отключалась.

  • Теперь установим программу, которая позволит нам отключаться от сервера, без потери контроля над нодой:

apt-get install screen -y

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

screen -S myscreen

cd pathfinder/py

python3 -m venv .venv

source .venv/bin/activate

PIP_REQUIRE_VIRTUALENV=true pip install --upgrade pip

PIP_REQUIRE_VIRTUALENV=true pip install -r requirements-dev.txt

  • Проверяем что все поставилось верно (пропишите и НИЧЕГО НЕ ТРОГАЙТЕ 20-30 секунд, оно остановится само):

pytest

Результат должен быть +- таким:

Шаг 6. Собираем ноду.

Этот шаг дольше остальных. В зависимости от конфигурации системы, он может занимать до 30 минут.

  • Никуда не выходя и ничего не трогая из предыдущего пункта, выполняем следующую команду

cargo build --release --bin pathfinder

Шаг 7. Создаем аккаунт Alchemy

Если вы хотите запустить ноду на Layer 2 (StarkNet), вам также необходимо знать, что происходит на Layer 1 (Ethereum), поскольку наша нода будет вычислять состояние StarkNet и подтверждать его на L1.

Таким образом, нам необходимо получить доступ к полному архиву ноды L1. Вы можете сделать это, подключившись к своему узлу L1 или, если у вас нет узла, создайте учетную запись у стороннего поставщика API, например Alchemy или Infura (мы выберем первое)

  • Переходим на Alchemy.com и регистрируемся.
  • В Dashboard нажмите Create App
  • Теперь задаем следующие параметры (название и описание можно оставить любыми) и нажимаем Create App
  • В появившемся окне нас интересует API KEY
  • На сервере пишем следующую команду, в которой xxxxxx заменяется на вот этот самый API KEY

cargo run --release --bin pathfinder -- --ethereum.url https://eth-mainnet.alchemyapi.io/v2/xxxxxx

  • После этого начинается долгая синхронизация ноды

Мы устанавливали Mainnet, и на момент написания гайда там было ~1400 блоков, а новый блок появлялся раз в час.

  • Теперь выходим из удаленного рабочего стола комбинацией клавиш CTRL+A, потом жмем d (обязательно на английской раскладке, иначе не сработает)
  • Чтобы зайти обратно на этот рабочий стол и убедиться что нода все еще работает и синхронизируется даже после закрытия PuTTY, можно прописать команду:

screen -r

Только не забудте потом обратно выйти через CTRL+A и d

  • Если все работает правильно, то на сайте Alchemy в разделе Apps должна начать появляться статистика вроде этой

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

Шаг 8. Хвастаемся в дискорде проекта

На момент написания гайда, наград за тестнеты/ноды не объявляли. Более того, даже уверяют, что их не будет. Но, возможно, это обман, чтобы выкинуть всех абузеров и флиперов. Так что делаем следующее:

  • Вступаем в Дискорд Starknet
  • В ветке #🛰-pathfinder-full-node делаем мини отчет о проделанной работе. Если что-то не получается вопросы можно задать там же
  • Можно, например, выложить пост в твиттер с какими-нибудь скринами, о том, что вы установили ноду.
  • Занимаемся другими активностями по StarkNet.

Ну и конечно надеемся на награды!

Гайд подготовлен каналом Поток <3