Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Новости
  • Как проверить подтверждения транзакции биткоин. Биткоин-транзакции

Как проверить подтверждения транзакции биткоин. Биткоин-транзакции

Что происходит, когда вы совершаете платежи или переводите биткоины? Блог сайт расскажет, как осуществляются такие операции и что из этого следует.

Что представляют собой транзакции биткоин?

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

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

  • Input (вход) - информация о том, с какого адреса (адресов) монеты пришли на кошелек, с которого совершается платеж;
  • Amount (сумма) - количество пересылаемых биткоинов;
  • Output (выход) - адрес получателя платежа.

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

Как в этом процессе участвуют майнеры? Именно они предоставляют вычислительные мощности для генерации блоков данных. Специальная программа, установленная на рабочей станции майнера, находит сведения об актуальных транзакциях в Mempool биткоина. Они «упаковываются» в блоки, присоединяемые к цепи. Когда процедура завершается, получатель вашего перевода видит пополнение на своем адресе.


Где посмотреть информацию о транзакциях с биткоинами?

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

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

Что делать, если транзакций с биткоинами не проходит?

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

Дело в том, что заявки в Mempool получают разный приоритет. Зависит он не от времени осуществления операции, а главным образом от суммы перевода и размера комиссии. Чем больше эти числа, тем привлекательнее транзакция для майнеров биткоинов, и они скорее выберут их для формирования очередного информационного блока.

13.02.2017 17:21


Борис Оболикшто
эксперт

Приятно чувствовать себя ниспровергателем мифов, и соблазн занять такую позицию всегда велик. Чтобы не поддаться ему, сразу замечу, что описанные ниже события случаются редко и не должны служить опровержением устоявшихся представлений о том, что биткоин - надежный платежный инструмент, а биткоин-транзакция (перевод этой цифровой денежки) - быстрая и простая операция. Тем не менее, для большинства пользователей биткоин-сервисов «зависший» платеж окажется неожиданным и, возможно, пугающим. Поэтому повторюсь: случай нетипичный, но не уникальный. И весьма ярко демонстрирующий, с одной стороны, пользу от понимания основ работы криптовалют (как, впрочем, и любой технологии), а с другой - неготовность существующей инфраструктуры к работе с блокчейном.


Зависшие Bitcoin-платежи: как это происходит? Фото: mmgp.ru

Итак, история наша началась с банального желания моего знакомого пополнить счет мобильного телефона при помощи биткоин-сервиса, для этого и предназначенного (ДА! Владельцы телефонов украинских мобильных операторов легко могут пополнить свой счет, находясь в любой тмутаракани, если там есть интернет, а у вас есть непустой биткоин-кошелек). Также ранее мы рассказывали, в том числе с помощью мобильного приложения.

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

Скриншот 1. Чтобы пополнить счет биткоинами, нужно всего пару кликов

Пополнить счет просто: заходишь на сайт сервиса, вводишь свой номер телефона, выбираешь сумму пополнения счета и получаешь адрес для перевода BTC-шек из своего кошелька сервис-провайдеру (см. скриншот 1). Если кошелек на мобильном устройстве, то еще проще: QR-код поможет быстро передать все параметры и выполнить оплату. Обычно так все и происходит: вы наводите камеру на QR-код, кошелек формирует транзакцию и выполняет оплату. Но в тот раз что-то пошло не так… Нет-нет, читатель, нет причин волноваться - все хорошо кончилось, но не будем забегать вперед.

Итак, с точки зрения пользователя все как обычно: кошелек (это был Bitcoin Core - самый традиционный из возможных) сформировал транзакцию, отправил ее в сеть и… И ничего не произошло. Не пришло подтверждения перевода, поступающего как правило минут через пять-пятнадцать (реже - через полчаса-час). И на следующий день кошелек сообщал о статусе транзакции неутешительное: «Status: 0/unconfirmed, in memory pool» («Статус: неподтверждена, в пуле»). Как наверное знает читатель, транзакции в биткоине безотзывные, то есть нет способа их отменить, деньги перечисляемые из кошелька ушли, а к получателю не пришли. Зависли, и теперь и в кошельке их нет, и счет мобильного не пополнен.


Ситуация «зависшей» биткоин-транзакции не уникальна, даже на русском языке Google дает тысячи ссылок по запросу «зависшие биткоин транзакции» (в выдаче по запросу «Bitcoin Transaction Pending» несколько сотен тысяч позиций, обширное обсуждение зависших транзакций на русском языке ). Постараемся разобраться, что произошло, но для этого нам нужно более подробное представление о том, как происходят транзакции, чем «нажал кнопку - и ОК».

Не буду дублировать рассказ о том, как устроен биткоин (можно прочитать ), остановимся только на процессе выполнения транзакции. Ваше биткоин-приложение, запросив из какого кошелька, сколько и кому вы переводите, сформирует и отправляет в сеть запрос на транзакцию, описывающую всё перечисленное в надлежащем формате. Транзакция попадет в пул (memory pool - mempool) и будет там ожидать майнера, который поместит ее в блок. Когда блок с этой транзакцией попадет в блокчейн, перевод завершится. Как помнит читатель, блокчейн состоит не из отдельных транзакций, а из блоков, то есть наборов транзакций и удостоверяющих их данных. Блоки формируют майнеры, которые получают за это два вида вознаграждений: плату за блок (сейчас это 12,5 BTC) и комиссию за транзакции, включенные в блок.

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


Но пока вернемся к пулу - месту, где «живут» транзакции, еще не подтвержденные и не отвергнутые (подробнее ). Майнеры отбирают из пула транзакции, пытаясь сформировать из них блоки. Так как размер блока ограничен, то в блок чаще всего отбирается лишь часть транзакций из пула (сейчас, когда я пишу эти строки, в пуле почти 41 тысяча неподтвержденных транзакций, занимающих более 42 МБ - понятно, что их все не поместить в один блок). Если мы проследим судьбу типичной транзакции, то увидим фазы ее жизни (см. скриншоты 2 и 3).

Скриншот 2. Транзакция появилась в пуле

Скриншот 3. Транзакция подтверждена и появилась в блокчейне

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

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

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

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


В зависимости от того, каким кошельком вы пользуетесь, обычная судьба «убитой» транзакции может быть различной. Например, транзакция может быть объявлена несостоявшейся, и неотправленные средства вновь появятся в кошельке. Но возможна и повторная попытка кошелька отправить транзакцию на исполнение в пул. В таком случае транзакция «возродится» в пуле и будет висеть там, периодически возобновляясь, неограниченно долго. В последнем случае ваши средства оказываются замороженными: они недоступны ни вам, ни получателю. Именно такой случай чаще всего описывают столкнувшиеся с зависшими транзакциями пользователи (см. например, заметку об экспериментах с нулевой комиссией). На первый взгляд, именно с такой ситуацией и столкнулся мой знакомый - кошелек упорно сообщает все то же: «Status: 0/unconfirmed, in memory pool».

В описанных случаях (см., в частности, ссылки выше), зависшие средства удается вернуть в кошелек, используя специальные ключи перезагрузки или перезагрузив программу с нуля (в последнем случае блокчейн загружается вновь путем запросов к сети, то есть не попавшие в него транзакции будут проигнорированы, и средства вернутся в кошелек). Процедура полной перезагрузки хлопотная и может занимать очень много времени (не шутка же - перезагрузить более 100 ГБ данных блокчейна), тем не менее, мой знакомый выполнил ее. И ничего хорошего не увидел. Даже спустя пару месяцев популярный сервис анализа блокчейна blockchain.info сообщал: «Transaction rejected by our node. Reason: Fee is too low / Not sufficient priority» («Транзакция отвергнута нашим узлом. Причина: Комиссия слишком мала / Недостаточный приоритет»). То есть, транзакцию по-прежнему видел, но выполнять ее отказывался. Печальная ситуация.

Но нам повезло! 21 января дело дошло до нашей транзакции, и она (ура!!!) выполнилась. И в описании транзакции видно, что было необычным. Рассмотрим скриншот 4.

Скриншот 4. «Наша» транзакция подтверждена!

Кроме нулевой комиссии (Fees), транзакция отличается от показанной на третьем скриншоте еще и полем «Lock Time». Этот параметр транзакции показывает, начиная с какого блока майнеры могут включать в блок транзакцию. Многие кошельки ставят 0, разрешая включать немедленно. А кошелек Bitcoin Core, по праву первооснователя считающий себя обязанным следить за безопасностью всей биткоин-сети, устанавливает в значение ближайшего генерируемого блока, что препятствует возможности злоумышленнику атаковать сеть, выстраивая из поздних транзакций конкурирующую с уже существующими блоками ветвь. Но блок 427560 оказался как раз тем редким блоком, который заполучил конкурента. Два майнера почти одновременно, с отличием менее двух секунд, сгенерировали блоки с таким номером (правильнее говорить «такой высоты» - порядковый номер блока в блокчейне называют высотой).


Блоки, которые порождали точки разветвления, отображает, например, Blockchain.info

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

С одной стороны, по мере роста интереса к технологии и числа активных кошельков, растет число запросов на транзакции, а значит и конкуренция за подтверждение транзакций (то есть, выполнение платежей). С другой стороны - ситуация улучшается потому, что новые кошельки поддерживают динамическое задание комиссии в зависимости от наполненности пула. А разработчики вводят новые возможности, в частности, возможность увеличить комиссию для уже отправленной в пул, но все никак не подтверждаемой транзакции (функция Opt-In Replace-by-fee (RBF)). Естественно, новые возможности появляются не сразу и не во всех кошельках, что заставляет пользователей следить за ситуацией, быть может, более внимательно, чем хотелось бы. Можно посоветовать, в частности, перевод относительно свежей заметки «Что делать, если «зависла» транзакция в сети Биткоина?»

Сервис поддержки пользователей мог бы стать еще одним фактором, стимулирующим распространение биткоин-платежей. Но пока спасение утопающих дело рук… Пусть не только самих утопающих, но еще и энтузиастов, подсказывающих на форумах что делать. Однако хотелось бы видеть постоянно действующие сервисы/горячие линии, пусть хотя бы на уровне объявлений на столбах: «Настрою биткоин-платежи, помогу вернуть зависшие транзакции». Понятное дело, здесь есть проблема: пока платежей немного, сервис не может быть рентабелен, пока сервиса нет - трудно рассчитывать на взрывной рост числа платежей (кстати, рост должен бы создавать и сервисы-надстройки, позволяющие выполнять клиринг платежей между участниками сервиса, снижая нагрузку на блокчейн).


Еще один вопрос касается уже не технологии, а права. Коль скоро транзакция может происходить достаточно долго, а волатильность биткоина немаленькая, то нужны правила, поскольку привычные «три банковских дня» перестают соответствовать нашим представлениям о справедливости. В примере, на котором мы рассматривали зависший платеж, средства были зачтены по курсу на момент создания транзакции. Но с момента транзакции курс биткоина вырос в полтора раза! Ок, мой заждавшийся перевода приятель был рад и этому. Но вряд ли такие риски приемлемы для массовых платежей. С трудом представляю себе и обратную ситуацию, когда пришедшая на третий день транзакция потеряла заметную часть стоимости. Возможно, ситуацию бы поправила страховка биткоин-платежей? Но и о таких услугах я не слышал.

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

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

BitCluster был разработан адъюнкт-профессором Давидом Декари-Эту (David Décary-Hétu) из школы криминологии при Монреальском университете и его коллегой, пентестером и исследователем Метью Лавои (Mathieu Lavoie).

Авторы утилиты в очередной раз доказывают, что Bitcoin – не анонимен. Если пользователь был неаккуратен и оставил в сети какие-то «улики», связывающие его реальную личность с конкретным кошельком, об анонимности можно забыть. Также даже обезличенные транзакции можно проследить через публичный блокчейн и построить настоящую карту связей.

Фактически именно это и делает BitCluster: группирует биткоин-транзакции по принадлежности к конкретной торговой площадке, человеку и так далее. При этом скрипту совершенно необязательно «знать» реальную личность пользователя, с его помощью все равно можно отслеживать денежные потоки и чужие траты.

«Наша цель – определить, сколько данных возможно собрать о людях, которые пользуются сетью биткоин, и понять, можно ли агрегировать биткоин-кошельки (которые вроде бы анонимны), а затем отделить данные о них друг от друга, - Декари-Эту. - Мы не пытаемся помочь преступниками или правоохранительным органам. Это открытый инструмент, который должен дать людям лучшее представление о том, что происходит в сети биткоин».

Тем не менее, исследователи признают, что с помощью их разработки возможно отследить денежные потоки киберпреступников. В частности, достаточно удобно отслеживать платежи, поступающие в адрес операторов вымогательского ПО. BitCluster позволяет собрать подобные кошельки в кластеры и определить, какое количество жертв уже заплатили злоумышленникам выкуп, сколько преступники заработали суммарно и так далее. Исследователи изучали еще оригинальный Silk Road, но также наблюдали и за активными сегодня подпольными торговыми площадками, такими как AlphaBay и Nucleus.

Хотя с 2015 года BitCluster был доработан, и разработчики готовы продемонстрировать улучшенную версию, сами они говорят, что не собираются хостить проект у себя. Дело в том, что на это уходит слишком много вычислительных ресурсов, особенно когда нужно провести большой анализ данных, к примеру, изучить информацию относительно закрывшейся биржи Mt. Gox.

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

«Данный инструмент просто помогает понять движение биткоинов в том случае, если люди используют [эту технологию] неправильно. И, давайте признаем, что большинство людей использует ее неправильно», - заключает Декари-Эту.

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

Понимание прозрачности Биткойна

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

Используйте новые адреса, для получения платежа

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

Будьте осторожны в общественных местах

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

Ваш IP адрес может быть зафиксирован

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

Ограничения миксеров

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

Будущие улучшения

Много изменений, способствующих улучшению конфиденциальности, находятся в разработке. Например, усилия по изменению платежного API направлены на то, чтобы предотвратить совместное использование адресов для платежа, что создает между ними ассоциацию. Изменение адресов сдачи, как в Bitcoin Core, может быть может со временем реализовано и в других кошельках. В графический пользовательский интерфейс могут быть добавлены удобные функции запроса платежей, что препятствует повторному использованию адресов. Ведется работа и по разработке других функций, потенциально увеличивающих конфиденциальность, например возможность объединять вместе транзакции случайных пользователей.

Лучшие статьи по теме