October 6

DOLI

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

Web Discord Github

Details:

  • Network Chain ID: mainnet
  • Block time: ~10 sec
  • Epoch: 360 blocks / ~1 hour
  • P2P: 30300 TCP
  • Discv5: 30301 UDP
  • RPC: 8500
  • Metrics: 9000
  • Bond: 10 DOLI
  • Max bonds: 3000
  • Explorer: https://explorer.doli.network/network.html https://explorer.utsa.tech/

DOLI - независимый Layer 1 блокчейн на Rust с собственной моделью Proof of Time. Вместо соревнования по вычислительной мощности или размеру стейка сеть использует последовательные вычисления как доказательство того, что прошло реальное время, а блоки создаются по детерминированному расписанию

Сеть работает на UTXO-модели, без EVM и универсальных smart contracts. Токены, NFT, AMM, lending и другие функции реализованы как нативные типы транзакций на уровне протокола

Награды собираются в общий пул и раз в epoch распределяются между активными producers пропорционально количеству bonds. Один bond в mainnet = 10 DOLI

Обновления

UPD 🕊

Height 🕊

systemctl stop doli

cd $HOME/doli
git fetch --all --tags
git checkout v6.43.0

cargo build --release -p doli-node -p doli-cli

cp $HOME/doli/target/release/doli-node /usr/local/bin/doli-node
cp $HOME/doli/target/release/doli /usr/local/bin/doli
chmod +x /usr/local/bin/doli-node /usr/local/bin/doli

doli-node --version
doli --version

systemctl restart doli && journalctl -u doli -f -o cat

Подготовка сервера

Минимальные официальные требования невысокие - producer guide указывает 2 CPU, 2 GB RAM и 20 GB SSD как минимальную конфигурацию

# обновляем репозитории
apt update && sudo apt upgrade -y

# устанавливаем необходимые утилиты
apt install -y git curl wget jq build-essential pkg-config libssl-dev libgmp-dev librocksdb-dev protobuf-compiler

# проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig

# проверяем работу интернета
curl -sL yabs.sh | bash -s — -fg

File2Ban - подробнее здесь

# устанавливаем и копируем конфиг, который будет иметь больший приоритет
apt install fail2ban -y && \
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \
nano /etc/fail2ban/jail.local
# раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 <ip>
systemctl restart fail2ban

# проверяем status 
systemctl status fail2ban
# проверяем, какие jails активны (по умолчанию только sshd)
fail2ban-client status
# проверяем статистику по sshd
fail2ban-client status sshd
# смотрим логи
tail /var/log/fail2ban.log
# останавливаем работу и удаляем с автозагрузки
#systemctl stop fail2ban && systemctl disable fail2ban

Устанавливаем Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

rustc --version
cargo --version

UFW

ufw allow 30300/tcp
ufw allow 30301/udp

Новая установка ноды

ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>

Устанавливаем бинарники

cd 
git clone https://github.com/doli-network/doli && cd $HOME/doli
git checkout main
git pull
grep '^version' Cargo.toml | head -1
# version = "6.43.0"

cargo build --release -p doli-node -p doli-cli

cp $HOME/doli/target/release/doli-node /usr/local/bin/doli-node
cp $HOME/doli/target/release/doli /usr/local/bin/doli
chmod +x /usr/local/bin/doli-node /usr/local/bin/doli

doli-node --version
doli --version
# doli-node 6.43.0 (e5a513f7)
# doli 6.43.0 (e5a513f7)

Инициализируем data directory

mkdir -p $HOME/.doli/mainnet
doli-node --network mainnet --data-dir $HOME/.doli/mainnet init

Создаем кошелек

doli -w $HOME/.doli/mainnet/wallet.json init

# восстановить кошелек
doli -w $HOME/.doli/mainnet/wallet.json --network mainnet restore

Не забываем сохранить seed и файлы кошелька!!!

Создаем сервисный файл

SERVER_IP=$(curl -4 -s ifconfig.me); USER_NAME=$(id -un); HOME_DIR=$HOME; sudo tee /etc/systemd/system/doli.service > /dev/null <<EOF
[Unit]
Description=DOLI Mainnet Producer
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=${USER_NAME}
ExecStart=/usr/local/bin/doli-node \
  --network mainnet \
  --data-dir ${HOME_DIR}/.doli/mainnet \
  --log-level info \
  run \
  --producer \
  --producer-key ${HOME_DIR}/.doli/mainnet/wallet.json \
  --p2p-port 30300 \
  --discv5-port 30301 \
  --external-address /ip4/${SERVER_IP}/tcp/30300 \
  --rpc-port 8500 \
  --metrics-port 9000 \
  --bootstrap /dns4/seed1.doli.network/tcp/30300 \
  --bootstrap /dns4/seed2.doli.network/tcp/30300 \
  --bootstrap /dns4/seed3.doli.network/tcp/30300

Restart=always
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable doli
systemctl start doli && journalctl -u doli -f -o cat

Регистрация producer

Для регистрации producer необходим минимум 1 bond = 10 DOLI

10.000001 DOLI получаем через faucet. Этого хватает на один bond и комиссию регистрации. Faucet предоставляется один раз на человека и предназначен для нового пустого адреса

Заходим в Discord и выполняем:

/faucet

Бот выдаст приватную ссылку перейдя по которой следуем инструкциям

Регистрируемся в качестве Producer

doli -w $HOME/.doli/mainnet/wallet.json \
  --rpc http://127.0.0.1:8500 \
  --network mainnet \
  producer register --bonds 1

Регистрация применяется не мгновенно - изменение producer set происходит на границе следующего epoch

# проверка регистрации
doli -w $HOME/.doli/mainnet/wallet.json \
  --rpc http://127.0.0.1:8500 \
  --network mainnet \
  producer status

Регистрируем имя Producer

После регистрации producer можно привязать читаемое имя

https://doli.network/register.html

Страница сформирует challenge, который необходимо подписать своим producer wallet

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

Информация

# проверка chain
doli --rpc http://127.0.0.1:8500 --network mainnet chain

# проверка network
curl -s -X POST http://127.0.0.1:8500 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"getNetworkInfo","params":{},"id":1}' | jq

# проверка wallet
doli -w $HOME/.doli/mainnet/wallet.json --network mainnet info

# проверка balance
doli -w $HOME/.doli/mainnet/wallet.json --rpc http://127.0.0.1:8500 balance

# добавить bond
doli -w $HOME/.doli/mainnet/wallet.json \
  --rpc http://127.0.0.1:8500 \
  --network mainnet \
  producer add-bond --count 10

Транзакции

doli -w $HOME/.doli/mainnet/wallet.json \
  --rpc http://127.0.0.1:8500 \
  --network mainnet \
  send <ADDRESS> <AMOUNT>

Удалить ноду

systemctl stop doli
systemctl disable doli
rm -f /etc/systemd/system/doli.service
systemctl daemon-reload

cd
rm -rf doli .doli
rm -f /usr/local/bin/doli
rm -f /usr/local/bin/doli-node