DOLI
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
- 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
Обновления
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
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env rustc --version cargo --version
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)
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
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
EOFsystemctl 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 можно привязать читаемое имя
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 10doli -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