Как работает отправка
При отправке BTCZ обычно удивляют две вещи: небольшой платёж может занять больше времени, чем крупный, а со временем баланс незаметно разбивается на множество маленьких частей. Обе причины сводятся к одной идее о том, как приватный кошелёк хранит ваши средства.
Главная идея
Ваш баланс — это не одно число. Это стопка отдельных монет, называемых нотами. Скорость отправки зависит от количества нот, которые вы тратите, а не от их стоимости — каждая нота должна быть запечатана собственным доказательством с нулевым разглашением. Этот единственный факт объясняет, почему «отправить всё» медленно, почему миллионы могут переместиться за секунды и почему Z-Text хранит ваши средства разделёнными на множество маленьких нот.
Ваш баланс — это стопка нот
Когда вы открываете кошелёк, вы видите единый баланс. Под ним этот баланс состоит из множества отдельных монет. В экранированном кошельке, подобном Z-Text, эти монеты называются нотами (техническое название — непотраченный выход транзакции, или UTXO). Каждая нота имеет фиксированное значение, а ваш баланс — это просто сумма всех ваших нот.
Ключевое правило: вы тратите целые ноты, но не их части. Это работает как с наличными. Если у вас одна монета стоимостью 10 и вы хотите заплатить 2, вы не можете разрезать монету пополам. Вы отдаёте всю монету и получаете сдачу.
Расходование и сдача
Поскольку вы тратите целые ноты, почти каждая отправка порождает сдачу. Допустим, вы тратите ноту стоимостью 0.01 BTCZ, чтобы отправить 0.0002. Сеть берёт небольшую комиссию (0.0001 BTCZ), получатель получает свою сумму, а остаток возвращается вам в виде новой ноты. Потраченная нота исчезает; вместо неё у вас появляется свежая нота-сдача.
Вот почему значения нот постоянно меняются по мере использования кошелька. А ещё поэтому только что созданной ноте-сдаче нужен момент для подтверждения, прежде чем её можно потратить снова — и это важнее, чем может показаться (см. ниже).
Почему скорость зависит от количества нот, а не от суммы
Вот что застаёт людей врасплох. Чтобы приватно потратить ноту, телефон должен построить доказательство с нулевым разглашением для неё: небольшое криптографическое доказательство того, что вы владеете нотой и имеете право её потратить, не раскрывая, какая именно это нота. Построение одного доказательства занимает примерно от одной до трёх секунд на телефоне.
Принципиально важно: существует одно доказательство на каждую потраченную ноту. Транзакция, расходующая 1 ноту, требует 1 доказательства. Транзакция, расходующая 50 нот, требует 50 доказательств. Размер сумм не имеет значения совсем; важно только количество нот.
Практическое правило
Скорость отправки зависит от количества нот, которые вы тратите, а не от того, сколько BTCZ вы отправляете.
| Что вы отправляете | Нот потрачено | Доказательств | Скорость |
|---|---|---|---|
| 5,000,000 BTCZ в одной ноте | 1 | 1 | Секунды |
| 1 BTCZ в 100 нотах | Много | Много | Десятки секунд или минуты |
| Отправить всё (всё подряд) | Все ваши ноты | Все | Медленнее всего, отправляется пакетами |
Практические примеры
Отправка одного сообщения
Сообщение тратит одну маленькую ноту. Z-Text хранит ноты примерно по 0.0002 BTCZ именно для этого: достаточно, чтобы покрыть 0.0001, отправляемый вашему контакту, плюс комиссию сети 0.0001. Одна нота, одно доказательство — готово за пару секунд. А в двустороннем диалоге 0.0001, который вы отправляете, возвращается к вам с ответом вашего контакта, поэтому реальная стоимость переписки сводится почти к одной комиссии.
5,000,000 BTCZ в одной ноте против 1 BTCZ в ста нотах
Если ваши пять миллионов BTCZ хранятся в одной ноте, их отправка — одно доказательство, завершающееся за несколько секунд. Если же у вас 1 BTCZ, разбитый на сто крошечных нот, то трата большей его части потребует доказательства десятков нот, что займёт гораздо больше времени, несмотря на то что сумма в миллионы раз меньше. Количество, а не сумма.
Отправка всего
«Отправить всё» — самая медленная операция, которую можно поручить кошельку, потому что он должен потратить каждую ноту. Доказательств так много, что они не умещаются в одну транзакцию, поэтому кошелёк отправляет ваш баланс несколькими последовательными транзакциями (примерно по 50 нот каждая), делая паузы для вычисления доказательств каждого пакета — примерно минута-две на пакет на телефоне. Кошелёк с 200 нотами превращается примерно в четыре последовательные транзакции. Это наглядно доказывает, что стоимость определяется количеством нот, а не суммой.
Почему Z-Text делит ваши средства
Если много нот замедляет отправку, зачем Z-Text намеренно разбивает ваши средства на множество маленьких? Потому что обмен сообщениями — противоположная задача. Каждое отправленное вами сообщение тратит одну ноту. Если бы весь ваш баланс находился в одной ноте, вы могли бы отправлять только одно сообщение за раз: после каждой отправки пришлось бы ждать, пока сдача не подтвердится, чтобы отправить следующее.
С пулом из множества маленьких нот каждое сообщение просто берёт следующую готовую ноту, позволяя отправлять много сообщений подряд без ожидания. Одна нота — одно сообщение за раз; сто нот — сто сообщений в полёте.
Ловушка ожидания
Если вы попытаетесь отправить второе сообщение, пока сдача от первого ещё не подтверждена, отправка завершится ошибкой — единственная доступная для расходования нота только что была использована. Здоровый пул уже подтверждённых нот — это то, что делает быстрый обмен сообщениями мгновенным. Подтверждение занимает примерно один блок — около двух с половиной минут.
Поэтому Z-Text разбивает большую ноту на множество маленьких нот примерно по 0.0002 BTCZ в одной транзакции (одна нота превращается в сотню за одну маленькую комиссию), а новая лицензия поставляется с готовым пулом нот, чтобы вы могли начать переписку прямо сейчас.
Поддержание здорового пула нот
Вам не нужно управлять этим вручную. Кошелёк следит за количеством ваших нот и показывает их состояние: комфортный пул — примерно пятьдесят нот и более, и он предупреждает, когда нот становится мало. Получение сообщений тоже пополняет пул — каждое полученное сообщение возвращает вам ноту, поэтому активная переписка естественным образом восполняет ваш пул.
Если вы захотите пополнить пул вручную — например, перед отправкой серии сообщений — вы можете разбить баланс на свежие ноты одним нажатием в Настройки → Управление нотами. Это одна транзакция с одной комиссией.
Глоссарий
| Термин | Значение |
|---|---|
| Нота | Отдельная экранированная монета фиксированного номинала. Ваш баланс — это сумма всех ваших нот. |
| UTXO | «Непотраченный выход транзакции» — техническое название ноты. |
| Сдача | Остаток стоимости потраченной ноты, возвращающийся вам в виде новой ноты. |
| Пыль | Очень маленькая сумма, например 0.0001 BTCZ, прикреплённая к сообщению. |
| Комиссия сети | Небольшая сумма (0.0001 BTCZ), которую блокчейн взимает за обработку транзакции. |
| Доказательство zk-SNARK | Доказательство с нулевым разглашением, создаваемое для каждой потраченной ноты. Делает отправки приватными — и требует времени. |
| Подтверждение | Нота становится надёжно расходуемой, как только её транзакция включена в блок — примерно каждые 2.5 минуты. |
Частые вопросы
Почему «Отправить всё» занимает так много времени?
Эта операция тратит все ваши ноты, и каждая требует собственного доказательства. При большом количестве нот кошелёк отправляет ваш баланс несколькими последовательными пакетами, вычисляя доказательства для каждого. Он работает, а не завис.
Почему маленький платёж иногда медленнее крупного?
Потому что скорость зависит от количества нот, задействованных в платеже, а не от суммы. Маленький платёж, набирающий много мелких нот, может быть медленнее крупного, использующего одну большую ноту.
Почему мой баланс разбился на множество маленьких сумм?
Это сделано намеренно. Пул маленьких нот позволяет быстро отправлять много сообщений, не дожидаясь подтверждения сдачи.
Я потерял монеты, когда баланс разбился?
Нет. Разбивка стоит только одну маленькую комиссию сети. А пыль, прикреплённая к сообщениям, возвращается к вам в двусторонних диалогах.
Моя отправка идёт уже давно. Что-то сломалось?
Скорее всего, нет. Отправка, расходующая много нот, просто требует времени для построения всех доказательств. Почти всегда это генерация доказательств, а не проблема с сетью или балансом.