March 1, 2025

Гайд по установке ноды « Fuel Sequencer»

Что такое Fuel?

Fuel — это операционная система, созданная специально для Ethereum Rollups. Она помогает ускорять и улучшать работу блокчейнов без компромиссов.

Как это работает?

FuelVM
FuelVM — это виртуальная машина, которая берет лучшие идеи из экосистемы Ethereum. Она использует улучшения, которые невозможно было внедрить в Ethereum Virtual Machine (EVM) из-за обратной совместимости.

Главное преимущество FuelVM — параллельное выполнение транзакций. Это значит, что блокчейн обрабатывает данные быстрее, используя сразу несколько ядер процессора, а не одно, как большинство блокчейнов. В результате FuelVM обрабатывает больше транзакций и выполняет сложные вычисления быстрее.

Язык программирования Sway

Fuel разработал свой язык программирования Sway — он похож на Rust, но создан специально для смарт-контрактов.

Sway сочетает в себе:

  • Безопасность и строгий контроль ошибок (как в Rust)
  • Удобство написания смарт-контрактов (как в Solidity)
  • Оптимизированную работу с блокчейном

Ниже приведена краткая информация, которая поможет вам начать работу с нодой для блокчейна Fuel Sequencer.

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

Системные требования

Настройка портов

По умолчанию для работы Fuel нужны следующие порты:

  • Sequencer: 26656, 26657, 9090, 1317
  • Sidecar: 8080
  • Ethereum: 8545, 8546

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

🔹 Если изменил порты у Sequencer → измени настройки в параметрах запуска Sidecar.
🔹 Если изменил порт у Sidecar → измени настройки в конфигурации Sequencer.
🔹 Если изменил порты Ethereum → обнови параметры запуска Sidecar.

Важно: если этого не сделать, модули просто не смогут соединиться друг с другом.

Гайд по установке ноды

1. Установите Go (GoLang)

Для работы Fuel вам нужно установить Go (версия 1.21 или выше).

Шаги:

  • Установите нужную версию Go:
ver="1.23.1"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
  • Удалите старую версию (если есть) и установите новую:
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
  • Добавьте Go в системный PATH:
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
  • Проверьте версию Go:
go version

2. Запустите Ethereum Full Node

Для оптимальной работы Sequencer, вам нужно запустить собственную Ethereum Mainnet ноду. Использование сторонних сервисов для Ethereum не рекомендуется.

Настройки Ethereum ноды:

  • --syncmode=snap
  • --gcmode=full

Рекомендуемая инструкция для установки Ethereum ноды:

3. Скачайте и настройте Sequencer

Теперь скачиваем бинарный файл и начальный файл конфигурации для Sequencer.

  • Скачайте бинарник для Sequencer:
cd $HOME
wget -O fuelsequencerd https://github.com/FuelLabs/fuel-sequencer-deployments/releases/download/seq-mainnet-1.2-improved-sidecar/fuelsequencerd-seq-mainnet-1.2-improved-sidecar-linux-amd64
chmod +x fuelsequencerd
mv ~/fuelsequencerd ~/go/bin/
  • Проверьте версию бинарника:
fuelsequencerd version

#вывод:
seq-mainnet-1.2-improved-sidecar
  • Инициализируйте директорию для ноды и задайте имя:
fuelsequencerd init <node-name> --chain-id seq-mainnet-1
  • Скачайте файл genesis.json в директорию конфигурации:
wget -O $HOME/.fuelsequencer/config/genesis.json https://files.block-pro.net/mainnet/fuel/genesis.json
  • Скачайте файл addrbook.json в директорию конфигурации:
wget -O $HOME/.fuelsequencer/config/addrbook.json  https://files.block-pro.net/mainnet/fuel/addrbook.json

4. Настройка конфигурации (app.toml)

Откройте файл конфигурации app.toml в директории ~/.fuelsequencer/config/ и установите параметры:

  • Установите минимальную цену газа:
minimum-gas-prices = "10fuel"
  • В разделе [sidecar] убедитесь, что:
enabled = true
address — адрес, где будет работать Sidecar (address = "localhost:8080")

5. Настройка конфигурации (config.toml)

Откройте файл config.toml и выполните следующие настройки:

  • В разделе [p2p] установите:
persistent_peers = "c92a832384b2b676c5b0f317acfb6c0d49846e80@fuel-mainnet-peer.block-pro.net:60756,b3052ca64950786499d56ade68593a555e383ad4@fuel-mainnet-peer.itrocket.net:63656,d48507eb9c8fc6cab278da8b64548496134562dc@141.95.11.200:26656,9584099276b4baf2d6fdf07d4eb9dec40564bba5@185.107.68.171:26656,bbb5f1939278b75efbc213067cc8226591353fc4@65.108.133.32:26656,5d75cca90b178f2b782ce57b0067c0ec8512354c@65.109.70.89:41656,0d7efe1a993e548acccba23358de50a87f5ac841@176.103.222.150:26656,445952b74b508ba5915f3c2f0a8d169a409f174b@57.129.64.92:26656,9bc530d3715a57b4e4f987e75343a67a747b4626@95.217.204.58:29656,9eb2801d1dde4b9ff0be3427092cc2548e973d71@176.103.222.162:26656,40369a07f904d01262141353b5b8fcc8fae2b9da@65.109.53.189:26656,9ad948216644797315b9dfd4851abc2a87235f29@37.27.129.24:14656"
  • В разделе [mempool] установите:
max_tx_bytes = 1258291
max_txs_bytes = 23068672

6. Настройка сжатия (pruning)

Для эффективного управления хранилищем данных, настройте параметры сжатия:

sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.fuelsequencer/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.fuelsequencer/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.fuelsequencer/config/app.toml

7. Запуск Sequencer через systemd

Чтобы запускать Sequencer как фоновый сервис, используйте systemd.

  • Создайте сервисный файл для Sequencer:
sudo tee /etc/systemd/system/fuelsequencerd.service > /dev/null <<EOF
[Unit]
Description=Sequencer Node
After=network-online.target

[Service]
User=$USER
WorkingDirectory=$HOME/.fuelsequencer
ExecStart=$(which fuelsequencerd) start --home $HOME/.fuelsequencer
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
  • Перезагрузите systemd и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable fuelsequencerd
sudo systemctl restart fuelsequencerd && sudo journalctl -u fuelsequencerd -fo cat

8. Запуск Sidecar

Для запуска Sidecar в фоне используйте сервисную настройку через systemd.

  • Создайте сервисный файл для Sidecar:
sudo tee /etc/systemd/system/sidecard.service > /dev/null <<EOF
[Unit]
Description=Sidecar
After=network-online.target

[Service]
User=$USER
WorkingDirectory=$HOME/.fuelsequencer
ExecStart=$HOME/go/bin/fuelsequencerd start-sidecar \
    --host "0.0.0.0" \
    --sequencer_grpc_url "127.0.0.1:9090" \
    --eth_ws_url "ws://127.0.0.1:8546" \
    --eth_rpc_url "http://127.0.0.1:8545" \
    --eth_contract_address "0xBa0e6bF94580D49B5Aaaa54279198D424B23eCC3"
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Перезагрузите systemd и запустите сервис:

sudo systemctl daemon-reload
sudo systemctl enable sidecard
sudo systemctl restart sidecard && sudo journalctl -u sidecard -fo cat

Теперь ваш Sequencer и Sidecar настроены и работают в фоновом режиме!

Запуск валидатора Fuel

1. Создание кошелька

Для работы валидатора потребуется адрес Sequencer. Создать новый кошелек можно с помощью команды:

fuelsequencerd keys add <ИМЯ>

Либо восстановить из мнемонической фразы:

fuelsequencerd keys add <ИМЯ> --recover

После выполнения команды появится адрес вида fuelsequencer1l7qk9umswg65av0zygyymgx5yg0fx4g0dpp2tl и мнемоническая фраза. Сохраните её в безопасном месте!

Генерация Ethereum-совместимого адреса

Чтобы получить совместимый с Ethereum адрес, выполните команду:

fuelsequencerd keys parse <АДРЕС>

Вы получите вывод вида:

bytes: FF8162F37072354EB1E222084DA0D4221E93550F
human: fuelsequencer

Добавьте 0x перед bytes, и получите нужный адрес:

0xFF8162F37072354EB1E222084DA0D4221E93550F

2. Пополнение аккаунта

Для работы валидатора необходимо пополнить аккаунт FUEL-токенами и ETH для оплаты газовых комиссий.

Важные адреса:

  • FUEL Token: 0x675B68AA4d9c2d3BB3F0397048e62E6B7192079c
  • Sequencer Interface (Bridge): 0xca0c6B264f0F9958Ec186eb2EAa208966187D866

Одобрение токенов

Перед пополнением кошелька необходимо разрешить Fuel Token Contract проводить транзакции. Для этого:

  1. Откройте Etherscan контракт FUEL-токена.
  2. Используйте функцию approve (0x095ea7b3).
  3. В поле Spender (адрес) введите: 0xca0c6B264f0F9958Ec186eb2EAa208966187D866.
  4. В поле Value (uint256) укажите количество токенов, добавляя 9 дополнительных нулей.
    • Для неограниченного одобрения укажите:
      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Бриджинг токенов (перевод на Sequencer)

  1. Откройте Sequencer Interface (Bridge) на Etherscan.
  2. Подключите Ethereum-кошелек (нажмите Connect to Web3).
  3. Используйте функцию depositFor (0x36efd6f).
  4. В поле Amount (uint256) введите количество токенов, добавляя 9 нулей.
  5. В поле Recipient address вставьте ваш Ethereum-совместимый адрес (например, 0xFF8162F37072354EB1E222084DA0D4221E93550F).
  6. Нажмите Write, подтвердите транзакцию.

Транзакция займет около 20 минут.

Проверка баланса

После завершения перевода, проверьте баланс в блок-эксплорере, введя ваш Sequencer-адрес.

3. Создание валидатора

Для этого потребуется минимум 1 FUEL, а также дополнительные токены для оплаты комиссий.

Создание конфигурации валидатора

Создайте файл validator.json и добавьте в него:

{
 "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"<PUBKEY>"},
 "amount": "1000000000fuel",
 "moniker": "<ИМЯ_ВАЛИДАТОРА>",
 "identity": "<ОПЦИОНАЛЬНО>",
 "website": "<ВАШ САЙТ>",
 "security": "<ВАШ EMAIL>",
 "details": "<ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ>",
 "commission-rate": "0.05",
 "commission-max-rate": "0.10",
 "commission-max-change-rate": "0.01",
 "min-self-delegation": "1"
}

Получение публичного ключа

fuelsequencerd tendermint show-validator

Скопируйте ключ и вставьте его в поле pubkey в validator.json.

Запуск команды для создания валидатора

fuelsequencerd tx staking create-validator path/to/validator.json \
    --from <ИМЯ_КОШЕЛЬКА> \
    --gas auto \
    --gas-prices 10fuel \
    --gas-adjustment 1.5 \
    --chain-id seq-mainnet-1

4. Проверка работы

После запуска валидатора:

  • В Sequencer должен отображаться процесс синхронизации блоков.
  • В Sidecar будут появляться запросы на обработку событий.

Поздравляем! Теперь ваш валидатор Fuel успешно запущен.