April 15

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

📋 Требования к серверу:

  • 2 CPU
  • 4 GB RAM
  • 20 GB Disk Space
  • Порты 31313 и 31314
  • Ubuntu 22+ версии

Внимание у хостера Play2go для подписчиков канала действует промокод SNGDAO он дает бонус к сумме пополнения +5%

Подойдет сервер от 280₽ / месяц, например LC-2

В этом гайде, установим ноду Drosera для участия в теснете:

  1. Установим CLI
  2. Настроим контракт
  3. Развернем Trap в тестнете
  4. Подключимся как оператор к Trap

🧩 Подготовка:

1) Как обычно обновляем все пакеты на сервере, перед установкой чего-то нового

sudo apt-get update && sudo apt-get upgrade -y

2) Выполняем

sudo apt install curl ufw iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev  -y

3) Настройка докера скопируйте и запустите эту команду целиком:

sudo apt update -y && sudo apt upgrade -y
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update -y && sudo apt upgrade -y

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Test Docker
sudo docker run hello-world

Почти в самом конце логов должны увидеть такую надпись: Hello from Docker!
This message shows that your installation appears to be working correctly.

4) Для работы нам нужен будет аккаунт на Github. Если у вас его нет, регистрируемся, если есть идем дальше.

🚀 Установка Trap

1) Drosera CLI:

curl -L https://app.drosera.io/install | bash
source /root/.bashrc
droseraup

2) Foundry CLI:

curl -L https://foundry.paradigm.xyz | bash
source /root/.bashrc
foundryup

3) Bun:

curl -fsSL https://bun.sh/install | bash


Размещение контракта и Trap

1) Создаем и переходим в рабочую папку:

mkdir my-drosera-trap
cd my-drosera-trap

2) Заменяем Github_Email & Github_Usernameна свои и выполняем:

git config --global user.email "Github_Email"
git config --global user.name "Github_Username"

3) Создаем Trap:

forge init -t drosera-network/trap-foundry-template

4) Компилируем Trap, на Warnings в логах внимание не обращаем и идем дальше

curl -fsSL https://bun.sh/install | bash
bun install
source $HOME/.bashrc
forge build

5) Редактируем файл с настройками:

cd ~/my-drosera-trap
nano drosera.toml

5) Размещаем Trap:

Идем в кран гугла и запрашиваем Holesky ETH на кошелек который будем использовать для ноды. Так же есть POW кран.

DROSERA_PRIVATE_KEY=ВАШ_ПРИВАТНИК drosera apply

Когда попросят подтверждение пишем ofc и жмем enter. После небольшого ожидания должны получить такое:

Проверяем Trap в Дашборде:

1) Подключаем наш кошелек на сайте https://app.drosera.io/

2) Нажимаем на Traps Owned для просмотра наших Traps

3) Кликаем на нашу Trap, чтобы её открыть. Далее нажимаем Send Bloom Boost и закидываем Holesky ETH в неё:

Вот бонусы в зависимости от баланса

4) Получаем блоки:

drosera dryrun

Установка и настройка Оператора

1)Добавляем Оператора в белый список

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

1) Открываем файл

nano drosera.toml


В самый низ файла вставляем:

whitelist = ["Operator_Address"]

Заменяем Operator_Address на публичный адрес вашего кошелька закрываем файл CTRL+X вводим Y для сохранения и enter

2) Обновляем Trap конфигурацию:

DROSERA_PRIVATE_KEY=ВАШ_ПРИВАТНИК drosera apply

Когда попросят подтверждение пишем ofc и жмем enter. После ожидания отправки транзакции возвращаемся в Дашбоард https://app.drosera.io/ на страницу нашего Trap и видим, что появился значок Private

2) Настройка оператора

1) Выполняем:

cd ~

вставляем целиком и выполняем:

# Download
curl -LO https://github.com/drosera-network/releases/releases/download/v1.19.0/drosera-operator-v1.19.0-x86_64-unknown-linux-gnu.tar.gz

# Install
tar -xvf drosera-operator-v1.19.0-x86_64-unknown-linux-gnu.tar.gz

2) Выполняем проверку, что CLI работает:

покажет версию

./drosera-operator --version

выполняем:

sudo cp drosera-operator /usr/bin

проверим работает ли оператор, должно показать список команд оператора:

drosera-operator

3) Загружаем образ для Docker'а

вставляем целиком и выполняем

# Optional: we don't install using docker
docker pull ghcr.io/drosera-network/drosera-operator:latest

4) Регистрируем Оператора

Меняем ВАШ_ПРИВАТНИК на приватный ключ кошелька для оператора, тот же что указывали выше в гайде при добавлении оператора в белый список

drosera-operator register --eth-rpc-url https://ethereum-holesky-rpc.publicnode.com --eth-private-key ВАШ_ПРИВАТНИК

Получим сообщение в логах о регистрации Оператора - Operator registered.

5) Создаем systemd для Оператора

Заменяете на ваши данные:

  • ВАШ_ПРИВАТНИК на приватный ключ Оператора
  • VPS_IP на IP вашего vps сервера

После того как поменяли данные, вставляем целиком и запускаем:

sudo tee /etc/systemd/system/drosera.service > /dev/null <<EOF
[Unit]
Description=drosera node service
After=network-online.target

[Service]
User=$USER
Restart=always
RestartSec=15
LimitNOFILE=65535
ExecStart=$(which drosera-operator) node --db-file-path $HOME/.drosera.db --network-p2p-port 31313 --server-port 31314 \
    --eth-rpc-url https://ethereum-holesky-rpc.publicnode.com \
    --eth-backup-rpc-url https://1rpc.io/holesky \
    --drosera-address 0xea08f7d533C2b9A62F40D5326214f39a8E3A32F8 \
    --eth-private-key ВАШ_ПРИВАТНИК \
    --listen-address 0.0.0.0 \
    --network-external-p2p-address VPS_IP \
    --disable-dnr-confirmation true

[Install]
WantedBy=multi-user.target
EOF

6) Открываем порты:

Вставляем целиком и когда попросит подтвердить вводим Y

# Enable firewall
sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable

# Allow Drosera ports
sudo ufw allow 31313/tcp
sudo ufw allow 31314/tcp

7) Запускаем Оператора

Вставляем целиком и запускаем:

# reload systemd
sudo systemctl daemon-reload
sudo systemctl enable drosera

# start systemd
sudo systemctl start drosera

8) Переходим в Дашборад

Нажимаем в Opti in для коннекта вашего оператора к Trap

После этого у нас в дашборде должны начать идти блоки

Полезные команды:

Проверка логов ноды

journalctl -u drosera.service -f

Остановить ноду

sudo systemctl stop drosera

Перезапустить ноду

sudo systemctl restart drosera


Как изменить RPC:

1️⃣ Останавливаем ноду: sudo systemctl stop drosera
2️⃣ Меняем RPC: sed -i 's|ethereum_rpc = ".*"|ethereum_rpc = "https://holesky.drpc.org"|' /root/my-drosera-trap/drosera.toml
3️⃣ Запускаем ноду: sudo systemctl restart drosera

Список RPC:
https://holesky.drpc.org
https://endpoints.omniatech.io/v1/eth/holesky/public
https://holesky.gateway.tenderly.co
https://ethereum-holesky-rpc.publicnode.com
https://1rpc.io/holesky

🧬 Обновление ноды(Trap) до актуальной версии

1) Останавливаем ноду:

sudo systemctl stop drosera

2) Обновляем:

curl -L https://app.drosera.io/install | bash
source ~/.bashrc
droseraup

3) Запускаем ноду:

sudo systemctl restart drosera

Через несколько минут в дашборде пойдут зеленые блоки


🤖 Как получить роль Cadet

1️⃣ Переходим в папку с дросера

cd my-drosera-trap

2) Создаем файл Trap.sol

nano src/Trap.sol

И вставляем в него следующее, заменяя дискорд_username на свой

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {ITrap} from "drosera-contracts/interfaces/ITrap.sol";

interface IMockResponse {
    function isActive() external view returns (bool);
}

contract Trap is ITrap {
    // Updated response contract address
    address public constant RESPONSE_CONTRACT = 0x25E2CeF36020A736CF8a4D2cAdD2EBE3940F4608;
    string constant discordName = "ТУТ_ВАШ_ДИСКОРД"; 

    function collect() external view returns (bytes memory) {
        bool active = IMockResponse(RESPONSE_CONTRACT).isActive();
        return abi.encode(active, discordName);
    }

    function shouldRespond(bytes[] calldata data) external pure returns (bool, bytes memory) {
        (bool active, string memory name) = abi.decode(data[0], (bool, string));
        if (!active || bytes(name).length == 0) {
            return (false, bytes(""));
        }

        return (true, abi.encode(name));
    }
}

Сохраняем файл, через CTRL+X далее Y далее Enter

3) Редактируем конфиг дросера

nano drosera.toml

Меняем там на следующие данные

  • path = "out/Trap.sol/Trap.json"
  • response_contract = "0x25E2CeF36020A736CF8a4D2cAdD2EBE3940F4608"
  • response_function = "respondWithDiscordName(string)"

Сохраняем файл, через CTRL+X далее Y далее Enter

4) Размещаем новую ловушку:

forge build
drosera dryrun

Применяем и размещаем:

DROSERA_PRIVATE_KEY=ВАШ_ПРИВАТНИК drosera apply

5) После того как разместили можем проверить её:

source /root/.bashrc
cast call 0x25E2CeF36020A736CF8a4D2cAdD2EBE3940F4608 "isResponder(address)(bool)" ТУТ_ВАШ_АДРЕС_КОШЕЛЬКА --rpc-url https://ethereum-hoodi-rpc.publicnode.com

Если получили true значит все хорошо.\

6) Перезапускаем:

cd
cd Drosera-Network
sudo systemctl restart drosera

Ждем пару дней и вам дадут роль Cadet в дискорде.

Миграция в сеть Hoodi

Для начала нам нужно получить от 0.1 ETH в сети Hoodi, это можно сделать тут https://hoodi-faucet.pk910.de/

После этого настраиваем и размещаем нашу новую ловушку:

1️⃣ Останавливаем ноду:

sudo systemctl stop drosera

2️⃣ Выполняем полностью команду, которая заменит rpc, контракт и тд.:

sed -i \
    -e 's|^ethereum_rpc *= *".*"|ethereum_rpc = "https://ethereum-hoodi-rpc.publicnode.com"|' \
    -e 's|^drosera_rpc *= *".*"|drosera_rpc = "https://relay.hoodi.drosera.io"|' \
    -e 's|^eth_chain_id *= *.*|eth_chain_id = 560048|' \
    -e 's|^drosera_address *= *".*"|drosera_address = "0x91cB447BaFc6e0EA0F4Fe056F5a9b1F14bb06e5D"|' \
    -e 's|^path *= *".*"|path = "out/HelloWorldTrap.sol/HelloWorldTrap.json"|' \
    -e 's|^response_function *= *".*"|response_function = "helloworld(string)"|' \
    -e '/^address *= *".*"/d' \
    -e 's|^response_contract *= *".*"|response_contract = "0x183D78491555cb69B68d2354F7373cc2632508C7"|' \
    ~/my-drosera-trap/drosera.toml

Адреса rpc можете указать, тут используются публичные.

3️⃣ Применяем изменения:

DROSERA_PRIVATE_KEY=ВАШ_ПРИВАТНИК drosera apply

4️⃣ Можете перейти по ссылке в дашборд и проверить, что новая ловушка в сети Hoodi размещена:

https://app.drosera.io/?filters=withTrapsOwned&userAddress=ВАШ_КОШЕЛЕК


Обновление и настройка оператора:

1️⃣ Обновляем:

droseraup

2️⃣ Регистрируем оператора:

drosera-operator register \
  --eth-rpc-url https://ethereum-hoodi-rpc.publicnode.com \
  --eth-private-key ПРИВАТНЫЙ_КЛЮЧ_ОПЕРАТОРА

Если пишет ошибку, то выполните команды из пункта Обновление ноды(Trap) до актуальной версии и попробуйте еще раз.

3️⃣ Добавляем оператора в ловушку:

Идете на https://app.drosera.io/ открываете вашу ловушку и жмете Opt-in и добавляете оператора

4️⃣ Меняем настройки в файле службы для оператора:

sudo sed -i \
    -e 's|\(--drosera-address \)[^ ]*|\10x91cB447BaFc6e0EA0F4Fe056F5a9b1F14bb06e5D|g' \
    -e 's|\(--eth-rpc-url \)[^ ]*|\1https://ethereum-hoodi-rpc.publicnode.com|g' \
    -e 's|\(--eth-backup-rpc-url \)[^ ]*|\1https://rpc.hoodi.ethpandaops.io|g' \
    /etc/systemd/system/drosera.service

Адреса rpc можете указать, тут используются публичные.

5️⃣ Перезапускаем службы:

sudo systemctl daemon-reload
sudo systemctl enable drosera
sudo systemctl start drosera


Ждете несколько минут - на странице с ловушкой должны пойти зеленые блоки.

Подписываемся на ТГ канал SNG DAO, чтобы ничего не пропустить!
Если есть вопросы или хотите обсудить заходите к нам в чат.