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

Концепции

Приватные пулы, активы, комиссии, заметки, блоки и валидаторы, пул обмена.

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

Приватные пулы и записи

Ваш баланс в Tint — набор записей (нот). Запись зашифрована для одного адреса и говорит: «столько-то этой монеты принадлежит вам». В цепочке записи хранятся как обязательства в дереве Меркла, так что никто не может ни прочитать их, ни понять, чьи они.

Чтобы заплатить, кошелёк тратит несколько записей и создаёт новые: одну для получателя и сдачу для вас. Доказательством Halo 2 он подтверждает, что владеет потраченными записями, что они существовали и что суммы сходятся, не называя, какие именно. Потраченная запись раскрывает нуллификатор — метку, по которой сеть отказывает во второй трате той же записи, не узнавая, какая это была запись.

Кошелёк получателя читает каждый блок и пробует расшифровать каждую новую запись своим ключом просмотра. Расшифровалась — запись его. Эта пробная расшифровка и есть причина, по которой узел не может узнать, кому адресован платёж.

Активы

Монета — это актив с номером. Актив 0 — родная монета TINT, актив 1 — тестовый доллар TUSD. В цепочке можно задать до 16 активов. У каждого актива свой приватный пул: платёж двигает записи одного актива, а обмен — единственное место, где два актива встречаются.

Суммы — целые числа единиц. Одна монета — 100 000 000 единиц (8 знаков), так что наименьшая сумма TINT — 0,00000001.

Комиссии

Каждое действие платежа платит минимальную комиссию, и комиссия платится в той монете, которую вы отправляете. Вторая монета «на газ» не нужна. В нынешней тестовой сети минимум такой:

МонетаКомиссия за действие
TINT0,00005
TUSD0,001

В транзакции от одного до 64 действий. Кошелёк показывает точную комиссию до подтверждения. Комиссия открыта.

Заметки

В каждой записи есть поле заметки на 512 байт, зашифрованное вместе с записью. Напишите там короткий текст, и прочитать его сможет только кошелёк получателя. Пустая заметка ничего не стоит дополнительно: поле есть у каждой записи.

Блоки и валидаторы

Tint работает на proof-of-stake. Фиксированный набор валидаторов договаривается о каждом блоке по BFT-консенсусу (Simplex, из библиотеки commonware). Блок окончателен, как только валидаторы о нём договорились: копить подтверждения не нужно.

  • Блок с платежами строится, как только есть что включить.
  • Тихая цепочка строит пустой блок примерно раз в 5 секунд, чтобы пустые блоки не забивали диск. Платёж этого отдыха не ждёт.
  • Параметры консенсуса задают минимум в полсекунды между двумя блоками.
  • Валидаторы выбираются в первом блоке и пока не меняются. В публичной тестовой сети все четыре работают на одном сервере.

Награды за блоки платят валидаторам: тестовая сеть начинает с 2 TINT за блок, вдвое снижает награду каждые 15 768 000 блоков и останавливается на остаточной награде 0,1 TINT.

Пул обмена

В цепочке есть встроенный пул, который обменивает TINT и TUSD друг на друга. Он следует правилу постоянного произведения (x · y = k): цена двигается вместе с двумя запасами пула. Пул удерживает 0,3 % от внесённого, и комиссия остаётся в пуле.

Начинает он с 200 000 TINT и 100 000 TUSD, то есть с полдоллара за монету. Пулом никто не управляет, а его монеты нельзя вывести: он только обменивает.

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

Ограничения

ОграничениеЗначение в тестовой сети
Действий в одной транзакции64
Действий в одном блоке2 048
Недавних корней, к которым можно привязать транзакцию1 000 блоков
Как далеко вперёд транзакция может задать срок1 000 блоков