Документация
Концепции
Приватные пулы, активы, комиссии, заметки, блоки и валидаторы, пул обмена.
Тестовая сеть: монеты ничего не стоят
Приватные пулы и записи
Ваш баланс в Tint — набор записей (нот). Запись зашифрована для одного адреса и говорит: «столько-то этой монеты принадлежит вам». В цепочке записи хранятся как обязательства в дереве Меркла, так что никто не может ни прочитать их, ни понять, чьи они.
Чтобы заплатить, кошелёк тратит несколько записей и создаёт новые: одну для получателя и сдачу для вас. Доказательством Halo 2 он подтверждает, что владеет потраченными записями, что они существовали и что суммы сходятся, не называя, какие именно. Потраченная запись раскрывает нуллификатор — метку, по которой сеть отказывает во второй трате той же записи, не узнавая, какая это была запись.
Кошелёк получателя читает каждый блок и пробует расшифровать каждую новую запись своим ключом просмотра. Расшифровалась — запись его. Эта пробная расшифровка и есть причина, по которой узел не может узнать, кому адресован платёж.
Активы
Монета — это актив с номером. Актив 0 — родная монета TINT, актив 1 — тестовый доллар TUSD. В цепочке можно задать до 16 активов. У каждого актива свой приватный пул: платёж двигает записи одного актива, а обмен — единственное место, где два актива встречаются.
Суммы — целые числа единиц. Одна монета — 100 000 000 единиц (8 знаков), так что наименьшая сумма TINT — 0,00000001.
Комиссии
Каждое действие платежа платит минимальную комиссию, и комиссия платится в той монете, которую вы отправляете. Вторая монета «на газ» не нужна. В нынешней тестовой сети минимум такой:
| Монета | Комиссия за действие |
|---|---|
TINT | 0,00005 |
TUSD | 0,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 блоков |