Masa Finance
November 19, 2022

Install Nod Masa Finance

Masa finance - протокол кредитования , позволяющий совмещать ликвидность CEX и DEX.

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

Минимальные: 2 CORE, 4Gb RAM, 80Gb SSD

Рекомендуемые: 4 CORE, 8Gb RAM, 200Gb SSD

OS: Ubuntu 20.04 LTS

Ports: 30300 (service), 21000 (docker), 3000 (docker UI), 8545 (RPC) Примечание: тестирование на других OS не производилось.

Установка

1.Обновляем Ubuntu

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

2.Устанавливаем полезные пакеты

sudo apt install apt-transport-https net-tools git mc sysstat atop curl tar wget clang pkg-config libssl-dev jq build-essential make ncdu -y

3.Install GO

Команды вводим по отдельности

ver="1.17.11"
cd $HOME
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"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile
source ~/.bash_profile

4.Устанавливаем ноду

cd $HOME
rm -rf masa-node-v1.0
git clone https://github.com/masa-finance/masa-node-v1.0
cd masa-node-v1.0/src
git checkout v1.03
make all
cd $HOME/masa-node-v1.0/src/build/bin
sudo cp * /usr/local/bin
cd $HOME/masa-node-v1.0
geth --datadir data init ./network/testnet/genesis.jsonn
  • Создаем сервис
MASA_NODENAME="СВОЁ ИМЯ"

Укажите свою NODE_NAME в кавычках !!!!!!!!

Вставляем одной командой!

tee $HOME/masad.service > /dev/null <<EOF
[Unit]
Description=MASA103
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which geth) \
  --identity ${MASA_NODENAME} \
  --datadir $HOME/masa-node-v1.0/data \
  --port 30300 \
  --syncmode full \
  --verbosity 5 \
  --emitcheckpoints \
  --istanbul.blockperiod 10 \
  --mine \
  --miner.threads 1 \
  --networkid 190260 \
  --http --http.corsdomain "*" --http.vhosts "*" --http.addr 127.0.0.1 --http.port 8545 \
  --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul \
  --maxpeers 50 \
  --bootnodes enode://136ae18de4e57e15e7dc70b03d59db11e77ae45de8ba89a243734b911b94477a3fa515d8a494c1ea79b97e134a17f04db9ff4e90e09e1c2bdba3e9aa061bf6ae@185.167.120.159:30300,enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000,enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@54.146.254.245:21000,enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000,enode://d87c03855093a39dced2af54d39b827e4e841fd0ca98673b2e94681d9d52d2f1b6a6d42754da86fa8f53d8105896fda44f3012be0ceb6342e114b0f01456924c@34.225.220.240:21000,enode://fcb5a1a8d65eb167cd3030ca9ae35aa8e290b9add3eb46481d0fbd1eb10065aeea40059f48314c88816aab2af9303e193becc511b1035c9fd8dbe97d21f913b9@52.1.125.71:21000
Restart=on-failure
RestartSec=10
LimitNOFILE=4096
Environment="PRIVATE_CONFIG=ignore"
[Install]
WantedBy=multi-user.target
EOF
sudo mv $HOME/masad.service /etc/systemd/system

5.Запуск сервиса

Одной командой

sudo systemctl daemon-reload
sudo systemctl enable masad
sudo systemctl restart masad
sudo systemctl status masad

Выход CNTR+C

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

Заходим в клиент geth

geth attach ipc:/home/masa/masa-node-v1.0/data/geth.ipc

Далее все команды выполняются внутри geth консоли

Проверка подключения к сети (верный ответ true)

net.listening

Проверка числа активных подключений (верный ответ больше нуля)

net.peerCount

Проверка нахождения в состоянии синхронизации (верный ответ false)

eth.syncing

Текущий блок

eth.blockNumber

Текущая сложность (высота) сети

admin.nodeInfo.protocols.eth.difficulty 

Подробная информация об узле

admin.nodeInfo 

Возвращает enodeID для регистрации в

admin.nodeInfo.enode

Подробную информацию о командах для консоли geth вы можете найти в официальной документации: https://geth.ethereum.org/docs/

Cначала Вы должны дождаться синхронизации .

В процессе выдает увеличивающиеся значения первой строки до совпадения со второй.

Проверка общего состояния ноды (Смотрим на строку difficulty: , она должна быть больше единицы и равна текущему блоку.)

admin.nodeInfo

Выход из консоли CTRL+D

Регистрируем ноду

Оффициальный сайт Masa

Регистрируйтесь с той почты, которую указывали в формах ранее. Если только сейчас ставите ноду , можете просто зарегистрироваться .

В разделе Node Operators вставьте enode своей ноды, который Вы можете взять из ноды. ( команду вводим в клиенте admin.nodeInfo.enode)

enodeID должен быть указан полностью (без кавычек). Правильный формат: enode://ID-128-CHARACTERS@IP:port

В этой вкладке Вы можете наблюдать свои реварды и аптайм нод. Награды приходят НЕ сразу.

Альтернативный метод получения enodeID

geth attach ipc:/home/masa/masa-node-v1.0/data/geth.ipc --exec web3.admin.nodeInfo |grep enode | sed {s/127\.0\.0\.1/`wget -qO - eth0.me`/} | sed "s/^.*\"\(.*\)\".*$/\1/"

Проверка логов

проверка логов проходит уже не в клиенте !!!!

journalctl -u masad -f
journalctl -u masad -f | grep "new block"

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

Запуск, остановка и перезапуск ноды docker

Запуск

sudo systemctl start masad

Остановка

sudo systemctl stop masad

Перезапуск

sudo systemctl restart masad

Добавление пиров (изменение бутноды)

Если количество активных подключений (пиров) равно нулю, то нода не сможет выполнить синхронизацию с сетью и необходимо исправить эту ситуацию. Вы можете сделать это автоматически с помощью скрипта или отредактировать конфигурационный файл вручную изменив бутноду.

Автоматический метод

Запустите скрипт и укажите новую бутноду, ниже приведён пример с бутнодой сообщества.

1. Запуск

. <(wget -qO- https://raw.githubusercontent.com/usrbad/masa-node-v1.0/main/addbootnode.sh) 

2. Бутнода

enode://7612454dd41a6d13138b565a9e14a35bef4804204d92e751cfe2625648666b703525d821f34ffc198fac0d669a12d5f47e7cf15de4ebe65f39822a2523a576c4@81.29.137.40:30300 

Ручной метод (для опытных)

При ручной правке вам необходимо отредактировать параметр --bootnodes конфигурационного файла, сохранить изменения и перезапустить ноду.

Правка

sudo nano /etc/systemd/system/masad.service 

Перезапуск

sudo systemctl daemon-reload && sudo systemctl restart masad

Резервное копирование и восстановление ноды

(работа с nodekey)

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

nodekey — уникальный ключ вашей ноды (64 символа), из него формируется enodeID, который необходим для регистрации в тестнете.

Место расположения файла nodekey отличается в зависимости от гайда по которому производилась установка.

Резервное копирование nodekey

Просто сохраните в надёжном месте вывод команды (64 символа)

sudo cat /home/masa/masa-node-v1.0/data/geth/nodekey 

Восстановление nodekey

Установите masa на сервер, отредактируйте nodekey (замените на значение из резервной копии), сохраните файл и перезапустите ноду. Для сохранения изменений в редакторе nano нажмите CTRL+O > ENTER > CTRL+X

Правка

sudo nano /home/masa/masa-node-v1.0/data/geth/nodekey 

Перезапуск

sudo systemctl restart masad 

Если всё сделано верно, то ваш старый enodeID будет восстановлен. (изменено)

Определение версии ноды

Версию masa можно определить по версии сети.

sudo geth attach ipc:/home/masa/masa-node-v1.0/data/geth.ipc --exec web3.admin.nodeInfo | grep -P "network|chainId" 

Удаление ноды

Перед удалением ноды обязательно сделайте резервную копию nodekey.

sudo systemctl stop masad 
sudo systemctl disable masad 
sudo rm -rf /etc/systemd/system/masad.service 
sudo rm -rf /root/masa-node-v1.0 
sudo rm -rf ~/masa-node-v1.0 
sudo rm -rf /home/masa/masa-node-v1.0 
sudo rm -rf ~/.ethereum 
sudo rm -rf ~/.cache/go-build 
sudo rm -rf ~/go 
sudo rm -rf 
/usr/local/bin/{abidump, abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, geth, p2psim, puppeth, rlpdump}

Удаление пользователя (только для setar)

sudo userdel -r masa sudo groupdel p2p

Пока на этом всё!!!