October 8

Morph

Требования:

CPU: 2 ядра Оперативаня память: 4 ГБ SSD: 600 ГБ

Подготовка сервера:
sudo apt update -y && sudo apt upgrade -y
Установка зависимостей:
sudo apt install curl git jq lz4 build-essential unzip make lz4 gcc jq ncdu tmux cmake clang pkg-config libssl-dev python3-pip protobuf-compiler bc -y
Устанавливаем docker:
sudo apt  install docker.io -y
Проверяем версию go и есть ли он на сервере:
go version
Если у нас стоит версия ниже 1.19, то удаляем go:
sudo rm -rf /usr/local/go
Установка ноды и geth:
mkdir -p ~/.morph

cd ~/.morph

git clone https://github.com/morph-l2/morph.git

cd morph

git checkout v0.2.0-beta

wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz

sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

export PATH=$PATH:/usr/local/go/bin

#Мы должны увидеть версию go version go1.22.0 linux/amd64
go version

make nccc_geth

cd ~/.morph/morph/node

make build
Скачиваем конфиг:
cd ~/.morph

wget https://raw.githubusercontent.com/morph-l2/config-template/main/holesky/data.zip
Распаковываем конфиг:
unzip data.zip
Получаем приватник от ноды:
openssl rand -hex 32 > jwt-secret.txt

cat jwt-secret.txt

Сохраняем приватник!

Синхронизация со snapshot:
wget -q --show-progress https://snapshot.morphl2.io/holesky/snapshot-20240805-1.tar.gz

tar -xzvf snapshot-20240805-1.tar.gz

mv snapshot-20240805-1/geth geth-data

mv snapshot-20240805-1/data node-data
Создаем системный файл (вставляем целиком):
sudo tee /etc/systemd/system/gethm.service > /dev/null << EOF
[Unit]
Description=Geth 
After=network-online.target
[Service]
User=root
ExecStart=/root/.morph/morph/go-ethereum/build/bin/geth \
     --morph-holesky \
     --datadir "/root/.morph/geth-data" \
     --http --http.api=web3,debug,eth,txpool,net,engine \
     --http.port 8546 \
     --authrpc.addr localhost \
     --authrpc.vhosts="localhost" \
     --authrpc.port 8552 \
     --authrpc.jwtsecret=/root/.morph/jwt-secret.txt \
     --miner.gasprice="100000000" \
     --log.filename=/root/.morph/geth.log \
     --port 30363
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Запуск geth:
sudo systemctl daemon-reload

sudo systemctl enable gethm.service

sudo systemctl start gethm.service
Проверка логов:
sudo journalctl -u gethm -f

для выхода из логов нажми CTRL+C

Запуск Morph:

Открываем новое окно терминала и переходим в нужную директорию:

cd /root/.morph
Создаем системный файл:
sudo tee /etc/systemd/system/morphm.service > /dev/null << EOF
[Unit]
Description=Morph Node 
After=network-online.target
[Service]
User=root
ExecStart=/root/.morph/morph/node/build/bin/morphnode \
     --home /root/.morph/node-data \
     --l2.jwt-secret /root/.morph/jwt-secret.txt \
     --l2.eth http://localhost:8546 \
     --l2.engine http://localhost:8552 \
     --log.filename /root/.morph/node.log
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Запускаем ноду:
sudo systemctl daemon-reload

sudo systemctl enable morphm

sudo systemctl start morphm
Просмотр логов:
sudo journalctl -u morphm -f

для выхода из логов нажми CTRL+C

Проверка статуса:
curl http://localhost:26657/status
Мы должны обратить внимание на 2 этих переменных. Кол-во блоков у вас будет другим.