Как проходят биткойн-трансакции?

 

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

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

Биткойнов как таковых нет, есть только записи о биткойн-трансакциях

Во-первых, биткойнов, как таковых, не существует. Забавно, но это факт. Их нет даже на жестком диске. Мы говорим, что у кого-то есть биткойны, но если взглянуть на конкретный биткойн-адрес, на нем не будут храниться цифровые монеты в том виде, как хранятся, например, доллары, фунты или рубли на банковских счетах. Вы не сможете указать на какой-то физический объект или даже электронный файл и сказать «это биткойн».

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

Так как что же представляет из себя трансакция?

Давайте смотреть. Пусть Маша отправит Васе несколько биткойнов. Это действие и есть трансакция, которая будет содержать в себе три типа данных:

Вход (Input) – запись о том, с какого адреса биткойны пришли Маше (допустим, она получила их от подруги Оли);
Сумма (Amount) – количество биткойнов, которые Маша пересылает Васе;
Выход (Output) – биткойн-адрес Васи.

Как происходит пересылка биткойнов?

Чтобы переслать биткойны кому-либо, нужно две вещи: биткойн-адрес и закрытый ключ. Не стоит проводить аналогии между биткойн-адресом и счетом в банке – между ними мало общего. В частности, для открытия биткойн-адреса нет необходимости заполнять груду бумаг и предоставлять какие-либо идентифицирующие вас документы. Фактически они создаются произвольно и представляют собой случайную последовательность букв и цифр. Закрытый ключ – это тоже последовательность из букв и цифр, но в отличие от вашего биткойн-адреса, он хранится в секрете.

Свой биткойн-адрес можно представить как прозрачную депозитную ячейку. Любой желающий может в нее заглянуть, посмотреть, что внутри, но открыть и забрать содержимое сможет только тот, у кого есть закрытый ключ.

Возвращаемся к Маше и Васе. Когда Маша хочет переслать несколько цифровых монет Васе, то с помощью закрытого ключа она подписывает “заявку” на перевод, в которую включаются, как указывалось выше, три типа данных: адрес, с которого биткойны поступили к Маше, количество и адрес друга-получателя. Затем она со своего биткойн-кошелька отправляет эту “заявку” сеть Биткойн. Там майнеры, находят, а затем подтверждают новую трансакцию в сети путем ее добавления в блок трансакций, что в конечном итоге приводит к увеличению баланса биткойн-адреса Васи.

Иногда подтверждение трансакций затягивается во времени. Почему?

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

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

А что, если сумма на входе и выходе трансакции разная?

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

Рассмотрим такую ситуацию. У нас есть Маша, которая, как мы писали выше отправляла биткойны Васе. Теперь представьте, что у Маши день рождения и ее друзья решили отправить ей в качестве подарка цифровые монеты. Итак, Света отправила подруге два биткойна, Дима – три и Юля – еще один, причем каждый со своего биткойн-адреса, ну и, естественно, в разное время дня. Так вот баланс биткойн-адреса Маши теперь увеличился на 6 биткойнов, однако это не означает, что трансакции от ее друзей были объединены в одну. Они так и будут привязаны к адресу Маши как отдельные, каждая от другого адреса, трансакции.

Теперь, если Маша захочет снова отправить Васе пару биткойнов, например 4, то ее кошелек будет пытаться использовать записи трансакций с различными суммами, которые сложатся в нужное количество биткойнов, которые она шлет Васе. То есть, в соответствии с нашим примером с днем рождения Маши, на Васю могут быть подвязаны трансакции от Димы (три биткойна) и Юли (один биткойн).

Впрочем, есть вероятность, что Маша может захотеть отправить Васе такое количество биткойнов, которое нельзя будет получить от суммы других трансакций. В нашем примере такой вариант возможен, если Маша решит переслать другу 1,5 биткойна. Ее биткойн-адрес не содержит трансакций именно на эту сумму, и никакие из имеющихся не дадут это количество при сложении. Маша не может разбить трансакцию на меньшие суммы, использовать трансакции можно только целиком.

Алгоритм Биткойн сработает следующим образом. Васе придет от Маши трансакция на большую сумму, например, та, которую отсылала Маше на день рождения Света – 2 биткойна. Полбиткойна же вернутся Маше в качестве сдачи. В частности, входными данными для трансакции от Маши к Васе будут данные о трансакции от Светы к Маше. Биткойн-адрес Васи – выходные данные. Отправляя трансакцию в обработку Машин кошелек создаст новый биткойн-адрес, принадлежащий Маше, который в свою очередь создаст свою трансакцию на 0,5 биткойна только от Васи к Маше. Таким образом, получится, что трансакция на 2 биткойна от Светы к Маше перейдет к Васе, а от Васи к Маше перейдет трансакция на 0,5 биткойнов, что означает, что Маша отправила Васе 1,5 биткойна.

Нужно ли платить комиссию за трансакции?

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

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

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

Важно!

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

Не забывайте, что величина рекомендованной комиссии зависит от размера транскации в байтах. Если трансакция составлена из множества мелких входов (например, полученных с биткойн-кранов), и её размер в байтах велик, то может потребоваться и довольно большая комиссия.

Что делать, если отправленная вами биткойн транзакция не подтверждается ("зависла")?

Сначала можно просто подождать. Если прошло уже несколько часов (или даже суток) и ждать надоело, действуем по следующему алгоритму (алгоритм описан для кошелька Bitcoin Core):

0) Убеждаемся, что трансакция ждёт подтверждения. Для этого копируем id вашей трансакции, вставляем в строку поиска сервиса blockchain.info (а также bitaps.com, blocktrail.com/BTC или аналогичного). Далее ищем глазами строку "unconfirmed". Нашли? Значит, трансакция ждет подтверждения.

Примечание. На Estimated Confirmation Time на странице с вашей трансакцией blockchain.info не смотрим -- там неизвестно что.

1) Теперь закрываем кошелек и запускаем его из командной строки с параметром -zapwallettxes и ждем пока он откроется. Когда кошелек запустится, все неподтвержденные трансакции из него исчезнут (но они ещё есть в сети!).

Примечание. Почему не с параметром -salvagewallet? -zapwallettxes не затронет имена ваших ключей, а -salvagewallet удалит их.

2) Теперь можно создавать новую трансакцию, не забыв поставить адекватную комиссию. Но! Поскольку ваша старая трансакция ещё осталась в сети, она может когда-нибудь неожиданно подтвердиться. Если вас это не устраивает, то у новой трансакции хотя бы один из входов должен будет совпадать с одним из входов старой. Для этого смотрим на странице вашей трансакции на сайте blocktrail.com/BTC или аналоге графу "inputs", запоминаем точный размер входа в битках. После этого при создании транзакции в кошельке нажимаем на кнопку "inputs...", находим в списке такое же точно число в битках и выбираем его. После этого выбираем ещё какие-нибудь входы, чтобы общая сумма была больше суммы трансакции с будущей комиссией; лучше выбирать с запасом. Далее заполняем все поля как обычно, (не забываем про комиссию!) и отправляем.

Иногда пишут, что всё это можно не делать, а просто подождать 2-3 суток, чтобы старая трансакция сама "канула в лету". Также, если вы работаете с кошельком, поддерживающим опцию Replace-By-Fee, вы можете увеличить размер комиссии для уже отправленной транскакции и тем самым попытаться её "протолкнуть". Подробнее здесь.


Как выбрать адекватную комиссию?

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

По адресу bitcoinfees.21.co в режиме реального времени отображаются актуальные уровни комиссий в биткойн-сети и приблизительное время подтверждения трансакций. Тарифы устанавливаются в сатоши на байт.

Размер рекомендуемой комиссии можно также посмотреть, например, на сайте bitaps.com. Там есть графа "Recommended fee". Если навести мышкой на эти слова, увидите подсказку. Если коротко - выбираете синее, зеленое или серое число в зависимости от желаемой скорости подтверждения, умножаете на 1000 (чтобы перейти от байтов к килобайтам) и вписываете в графу "custom transaction fee" при отправке транзакции.

У меня получается очень большая комиссия, как сэкономить?

Можно выставить вручную комиссию гораздо меньше рекомендуемой и трансакция всё равно пройдёт, если нет очереди (наличие или отсутствие очереди проверяйте на bitaps.com - графа "new transactions" или аналогичном). Если там видим число не больше 5 (максимум 10) тысяч, можно попробовать. Успешно проходят трансакции с комиссией от 1000 сатоши за килобайт (это в 10-100 раз меньше обычно рекомендуемой), но придётся подождать несколько часов или даже суток и есть вероятность, что трансакция не пройдёт. Если нужно перевести деньги быстро, не пытайтесь так сэкономить!

Могу ли я получить чек или документ, подтверждающий перевод биткойнов?

Биткойн на самом деле не подразумевает чеков или квитанций. Хотя ожидающиеся обновления изменят способ работы с платежами, что сделает их более продуманными и удобными для пользователя. Такие процессинговые компании как BitPay также предоставляют дополнительные возможности, которые обычно не предусмотрены при стандартных биткойн-трансакциях, например выписки и страницы подтверждения заказов.

Что если я хочу отправить часть биткойна?

Вполне. Биткойны – делимые единицы, вплоть до стомиллионных. Одна стомиллионная биткойна называется “сатоши”, и в биткойн-сети можно отправить перевод размером 5430 сатоши.

Источник: coinspot.io