Что происходит внутри транзакции Blocknet?

· 4 мин чтения

Проследите один платёж Blocknet по частям, которые формирует кошелёк: имеющиеся средства, новые выходы, сдача и сетевая комиссия. Этот разбор объясняет, почему платёж одному человеку может иметь несколько выходов и почему расходование выхода кошелька не означает передачу всей его стоимости получателю. В расчёте используются вымышленные суммы, а ориентиром реализации служит выпущенный кошелёк core v0.22.0.

Как транзакция Blocknet перемещает ваши средства?

Краткий ответ

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

Начните с выходов, уже принадлежащих кошельку

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

Допустим, кошелёк выбирает выход стоимостью 10 BNT для платежа 3 BNT. Он расходует этот существующий выход целиком. Затем новая транзакция распределяет стоимость между получателем, сдачей и комиссией. Другие выходы кошелька могут остаться нетронутыми; выбранная сумма не обязательно равна всему балансу.

Несколько меньших выходов тоже могут обеспечить один платёж. Конструктор выпущенного кошелька выбирает достаточно созревших средств для суммы получателю и комиссии. Выбор входов и оценка комиссии по размеру влияют друг на друга, поэтому важен актуальный предварительный просмотр кошелька. Руководство по комиссиям транзакций объясняет расчёт и где его проверить.

Пример транзакции: 1 выбирает 10 BNT; 2 отправляет получателю 3 BNT; 3 возвращает 6,9995 BNT сдачи; 4 учитывает сетевую комиссию 0,0005 BNT.

Читайте схему как учёт средств кошелька: 1 — выбранный вход, 2 — выход получателя, 3 — ваш выход сдачи, 4 — комиссия. Числа приведены для примера; комиссия условная, а не предложенная к оплате. Стрелки показывают принадлежность и распределение стоимости, а не общедоступные связи в обозревателе.

Почему один платёж может создать несколько выходов?

В этом примере 10 BNT = 3 BNT + 6.9995 BNT + 0.0005 BNT. Получатель получает 3 BNT, ваш кошелёк — 6.9995 BNT сдачи, а транзакция оплачивает условную комиссию 0.0005 BNT. Создаются два новых выхода кошельков, хотя вы хотели заплатить одному человеку. Комиссия — отдельное поле транзакции, а не третий выход получателю.

Два выхода — удобный пример, но не правило для всех платежей. Конструктор поддерживает нескольких получателей, а расширенный механизм выбора входов может разделить сдачу между несколькими выходами. Если выбранная стоимость точно покрывает получателей и комиссию, выход сдачи не нужен. Операция отправки всех средств рассчитывает сумму получателю, вычитая комиссию из выбранной доступной суммы.

Таким образом, число выходов описывает структуру транзакции. Оно не считает клиентов, счета или разные кошельки. Несколько выходов могут принадлежать одному кошельку, а транзакция с несколькими входами может платить одному получателю. Помните об этих различиях, сравнивая запись платежа в кошельке с более кратким структурным описанием в обозревателе.

Куда поступает сдача?

Кошелёк создаёт сдачу для собственных ключей. В примере исходный выход 10 BNT расходуется, а сдача 6.9995 BNT — новый выход, который распознаёт тот же кошелёк. При обычной отправке не нужно указывать второго получателя или вручную копировать адрес сдачи.

Выходы получателя и сдачи используют одноразовые ключи выходов. В публичной транзакции ваш привычный адрес получения не помещается рядом с меткой «сдача». У кошелька есть закрытая информация для распознавания собственных выходов. Руководство по стелс-адресам объясняет связь одноразовых ключей с многоразовым адресом получения.

Сдача также подчиняется правилам для вновь созданных выходов. После отправки часть баланса может ожидать подтверждения или созревания, хотя всё ещё принадлежит вам. Нетронутый созревший выход может оставаться доступным, пока новая сдача ожидает. Перед следующим платежом проверяйте доступный для расходования баланс; руководство по времени перевода объясняет этапы от распространения до возможности расходования.

Что проверяет сеть и что показывает обозреватель?

У каждого настоящего входа есть доказательство конфиденциальности, помещающее его среди возможных предыдущих выходов. Другие участники кольца — приманки: средства их владельцев не участвуют в вашем платеже. Образ ключа позволяет сети обнаружить повторное расходование, не публикуя, какой участник кольца был настоящим источником. Этот механизм описан в статье о кольцевых подписях.

Сеть также проверяет обязательства по суммам и доказательства, включая баланс транзакции с комиссией. Руководство по доказательствам диапазона объясняет эти проверки при скрытых суммах. Публичные данные включают хеш транзакции, структуру входов и выходов и комиссию. Вставка хеша в обозреватель сама по себе не раскрывает закрытый расчёт из примера.

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

Проследите подтверждение платежа

Перед подтверждением отправки вместе проверьте данные получателя, сумму, комиссию и сдачу. После отправки хеш обозначает всю транзакцию, включая все входы и выходы. Это не адрес получения и не идентификатор только выхода получателя.

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

Разбирая вопрос о платеже, начните с намеченной суммы и записи кошелька, затем проверьте статус транзакции. Так удобно понять платёж: что выбрали, что получил получатель, что вернулось сдачей и что ещё ожидает. Это работает независимо от того, поступили средства от другого человека или как выплата майнинг-пула.

Часто задаваемые вопросы

Почему у моего платежа Blocknet два выхода?

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

Нужно ли копировать адрес сдачи перед отправкой?

В проверенной реализации кошелёк создаёт сдачу с помощью собственных открытых ключей. Вы вводите данные нужного получателя; выходом сдачи занимается кошелёк. Этот выход принадлежит кошельку отправителя и становится доступен для расходования по обычным правилам подтверждения и созревания.

Тратит ли кольцо входа деньги всех участников?

Каждый вход расходует один настоящий выход, принадлежащий отправителю. Остальные участники кольца служат возможными источниками для доказательства конфиденциальности; их стоимость не добавляется к платежу. Транзакция может использовать несколько настоящих входов, у каждого своё кольцо и образ ключа.