Документация

Запуск узла

tintd — программа валидатора. Здесь: локальная тестовая сеть, команды и то, как устроен публичный тестовый узел.

Тестовая сеть: монеты ничего не стоят

Команды

КомандаЧто делает
tintd testnetСоздаёт файлы локальной тестовой сети.
tintd runЗапускает один валидатор.
tintd payОтправляет монеты из кошелька, заданного файлом с сидом.
tintd swapОбменивает одну монету кошелька из файла с сидом на другую через пул.

Локальная тестовая сеть на одной машине

Создайте файлы для четырёх валидаторов, затем запустите каждый в своём терминале.

bash
tintd testnet --dir net --addresses 127.0.0.1:4100,127.0.0.1:4101,127.0.0.1:4102,127.0.0.1:4103
bash · валидатор 0
tintd run --local \
  --genesis net/genesis.bin \
  --validators net/validators.txt \
  --key net/validator-0/key \
  --data net/validator-0/data \
  --rpc 127.0.0.1:4200

Повторите для валидаторов 1–3 со своими --key, --data и, если нужен и их интерфейс кошельков, другим портом --rpc. --local разрешает частные адреса, которые нужны сети на одной машине.

testnet создаёт genesis.bin, validators.txt, папку с ключом каждого валидатора и faucet.seed — сид кошелька, в котором лежат все тестовые монеты. Держите сид в секрете.

Отправка и обмен из командной строки

bash
tintd pay --node http://127.0.0.1:4200 --seed net/faucet.seed --to tint1... --amount 100
bash
tintd pay --node http://127.0.0.1:4200 --seed net/faucet.seed --to tint1... --amount 50 --coin TUSD
bash
tintd swap --node http://127.0.0.1:4200 --seed net/faucet.seed --amount 10 --buy TUSD

Без --coin команда pay отправляет родную монету. swap платит родной монетой, если не назвать другую через --pay; одна из двух монет обмена всегда родная.

Флаги tintd run

ФлагСмысл
--genesisФайл первого блока.
--validatorsФайл со списком валидаторов.
--keyФайл с закрытым ключом этого валидатора.
--dataПапка для блоков этого валидатора.
--listenАдрес для прослушивания; по умолчанию тот, что в списке валидаторов.
--metricsАдрес, на котором отдавать метрики. Без флага выключено.
--rpcАдрес, на котором обслуживать кошельки по HTTP. Без флага выключено.
--rpc-behind-proxyКошельки идут к --rpc через обратный прокси на этой машине: клиентов считать по X-Forwarded-For.
--localПринимать частные адреса, для сети на одной машине.
--log-jsonПисать журнал строками JSON.
--log-levelerror, warn, info (по умолчанию), debug или trace.
--idle-block-msСколько миллисекунд цепочка без ожидающих платежей отдыхает между блоками. По умолчанию 5000, не больше 60000. У всех валидаторов значение должно быть одинаковым.

Как устроен публичный тестовый узел

Публичный узел https://node.tint.top — один сервер с четырьмя валидаторами: он проверяет, что сеть работает, и ничего не доказывает о децентрализации.

ЧтоГде
Четыре валидатораюниты systemd tint-validator@0 … @3, общаются через 127.0.0.1:4100 … 4103
Интерфейс кошельковвалидатор 0, 127.0.0.1:4200, снаружи недоступен
HTTPSCaddy на порту 443, пересылает /v1/* на интерфейс кошельков
Данные цепочки/var/lib/tint/validator-N/data
  • Прокси не ведёт журнал обращений: запись о том, кто что спрашивал с какого адреса, — то, что сеть приватности хранить не должна.
  • Нет порта метрик и нет открытых портов валидаторов; валидаторы общаются друг с другом через петлевой интерфейс.
  • Валидатор хранит все блоки навсегда. Размер на диске: du -sh /var/lib/tint/validator-*/data.
  • На сервере с 1 vCPU и 2 ГБ каждый валидатор после первого запуска занимал около 92 МБ памяти; юнит ограничивает его 1 ГБ.

Посмотреть на работающий узел

bash
curl -s http://127.0.0.1:4200/v1/status

На сервере под systemd systemctl status 'tint-validator@*' покажет юниты, а journalctl -u 'tint-validator@*' -n 50 — последние строки журнала.

Подключить кошелёк к своему узлу

В настройках кошелька общий узел можно заменить своим. Узел должен отдавать интерфейс кошельков по HTTPS и принадлежать той же сети, то есть иметь тот же первый блок, что и остальные данные кошелька. Кошелёк, встретивший новый первый блок, читает новую цепочку с начала.