Как работает «сдача» при совершении Bitcoin транзакции?
Прошу прощения, если для кого-то этот вопрос покажется глупым, но я никак не могу до конца понять как устроены транзакции биткоин и как они сохраняются в Blockchain.
Я заметил, что во время отправки денег с одного кошелька на другой происходит не одна операция, а сразу несколько. Т.е. в одной транзакции содержатся сразу несколько адресов получателей и разные суммы для каждого из адресов.
Один из этих адресов действительно тот, который был указан мной как «получатель» в биткоин-клиенте, при отправке денег.
Еще я заметил что общая сумма транзакции равна последнему поступлению денег в мой кошелек. Т.е. как бы отправка происходит всего куска, часть из них уходит действительно адресату, а часть переходит на мои же адреса (вроде бы). Т.е. Поступления на мой счет являются как бы «неделимыми»?
Наверно я ничего не понимаю из-за того, что не знаю что-такое Инпуты и Оутпуты и, вообще, как хранятся данные в Blockchain.
Задал вопрос на Reddit/r/Bitcoin, там мне посоветовали эту ссылку
bitcoin.stackexchange.com/questions/736/how-does-c.
Читаю, перевожу, даже распечатал. Ничего не понимаю.
По поводу разницы между аккаунтом и адресом, это понятно. Аккаунт один, адресов в нем много. К каждому адресу приватный ключ. Но кто такие «Инпуты» и «Оутпуты» и почему они существуют?
Буду крайне признателен за помощь.
UPDATE: Забыл указать, что для просмотра транзакций я использовал адрес https://blockchain.info/ru/address/, а в качестве биткоин клиента оригинальный bitcoin-qt
- Вопрос задан более трёх лет назад
- 11761 просмотр
- Вконтакте
- Вконтакте
Кошелек — это набор сгенерированных пар приватный ключ/адрес, некоторые из которых могут иметь непотраченные выходы (типа купюры).
Биткоин-транзакции имеют входы и выходы, выходы можно потратить, создав биткоин-транзакцию, где эти выходы станут входами, а выходы — адрес получателя и (опционально) адрес, куда пойдет разница между суммой входов и значением, который получит этот получатель.
Вобщем, это нужно немного осмыслить 🙂
- Вконтакте
Ага, кажется начинаю понимать. Т.е. Вход — это приход денег. Например мне кто-то оправил 5 БТЦ на мой адрес, значит появился Вход на 5 биткоинов. Теперь если мне нужно будет потратить 1 битикоин, то транзакция будет состоять из перевода в 5 БТЦ и сдача в 4 БТЦ, верно?
Мне только непонятно почему делить «купюру» перед отправкой нельзя, а вот при возврате сдачи проблем с разделением не возникает? Наверняка в этом есть определенный смысл.
Каждая транзакция сохраняется в Blockchain в виде информации, но основная роль Blockchain это задать порядок транзакций: каждый блок это как вагон в котором лежат дровишки — каждая дровишка уникальна, пронумерована, зашифрована — эти дровишки и есть транзакции и весь вагон проштампован чтобы злоумышленики не вскрыли и не утащили ни единую дровшику, иначе будет недовес и несоответствие другим точным показателям (по миллиграммам определяется :)).
Фигуративно также существует TransactionChain — это уже другая цепочка в этой цепочке транзакции идут друг за другом, ссылаясь друг на друга с момента когда произошла эмиссия (например цепочка из 500 транзакций и так пока фрактальный резерв не закончится).
Меня интересует больше другой вопрос: насколько я понял проверкой TransactionChain занимается комп.пользователя биткоин клиента на основании данных полученных из папки блокчейн и пр. информации — также мне неизвестна иерархия хранения — подскажите — блокчейн хранится отдельно от транзакшнчейна или транзакшнчейн прямо в одном файле находится вместе с блокчейном?
Но самый основной вопрос который прямо не даёт мне спать: насколько длинной должна стать цепочка этих аутпутов / инпутов отсчитывая от genesis block чтобы засорить процессор чрезмерно сложными вычислениями? Да я понимаю что биткоин-клиент в первом запуске может несколько часов только лишь проверять цепочки TransactionChain’a на валидность (если я правильно понял по таймингу, если неправильно то поправьте — и скажите сколько реально на что в основном уходит время).
Меня интересует насколько должна быть большая цепочка TransactionChain’a для того чтобы компьютеру ушло более 1 дня на анализ происходящего (В том плане если в будущем не обрезать блокчейн ведь так и так будут копиться астрономические суммы).
Как работают транзакции в сети Bitcoin. Показываем на примерах и с картинками
Команде майнинг-пула Trustpool часто поступают вопросы о том, как формируются транзакции в сети Bitcoin и рассчитывается комиссия. Мы обратились к эксперту — админу нашей техподдержки Vlad D, чтобы он рассказал, как это все работает. Погнали →
Транзакция в блокчейне — запись о том, что вы сделали перевод или получили монеты. Например, вы отправили 0,5 BTC своему другу. В записи транзакции будет:
- Адрес вашего кошелька
- Адрес кошелька друга
- Сумма перевода
- Комиссия за транзакцию
Важная часть транзакции — цифровая подпись. Она защищает вас от несанкционированных действий с монетами, которые хранятся на кошельке. Для того чтобы создать транзакцию, используется уникальный приватный ключ вашего адреса.
Дальше транзакция, которую сформировал ваш кошелек, отправляется в сеть Bitcoin. Там ее проверяют ноды.
Нода (сетевой узел, блокчейн-узел) — часть сети блокчейна, который обеспечивает ее ресурсами для работы. Ноды реализуют алгоритмы протоколов блокчейна, проверяют корректность транзакции, достаточность средств на перевод и комиссию, а также обеспечивают безопасность сети.
Если проверка прошла успешно, то транзакция перемещается в мемпул (mempool).
Мемпул — зал ожидания для транзакций. Как в аэропорту, только в блокчейне =)
Из транзакций, которые ждут подтверждения, формируются новые блоки. Чем выше комиссия, которую вы готовы заплатить при переводе, тем быстрее транзакция будет включена в следующий блок, а запись о ней появится в блокчейне.
На сервисе txstreet.com видно, какая средняя комиссия за транзакцию в эту минуту и сколько их стоит в списке на подтверждение. Чем больше очередь, тем дольше придется подождать обработки.
После того как транзакция подтверждена, монеты поступают получателю. Стоит учитывать, что не всегда достаточно одного подтверждения. Некоторые биржи или кошельки требуют от 2 до 6 подтверждений — это увеличивает время получения транзакции.
Транзакции проходят несколько этапов подтверждения. Скорость процесса бывает разная — от 10 минут до нескольких часов, и даже дней.
Что влияет на скорость обработки →
Причина № 1. Сеть Bitcoin не адаптирована к большой нагрузке
Опыт прошлых месяцев показал, что у сети ограниченная масштабируемость — блоки Bitcoin ограничены по размеру и объемам транзакции.
На момент создания статьи в мемпуле ждут подтверждения более 150 000 транзакций, а средний блок Bitcoin содержит от 1500 до 4000 транзакций. При этом новый блок создается, в среднем один раз в 10 минут. Из-за этого транзакции застревают в мемпуле и увеличивается время обработки.
Причина № 2. Размер комиссии сети
Биткоин-майнеры отвечают за создание новых блоков. Комиссия за транзакцию — вознаграждение за то, что майнеры ее проверят и включат в блок.
Когда формируется транзакция, вы можете выбрать размер комиссии, которую готовы заплатить. Но на этом этапе иногда включается людская жадность и человек ставит минимальную сумму =) Хотите сэкономить? Без проблем. Но будьте готовы к тому, что транзакция будет долго стоять в длинной очереди мемпула.
Криптовалютные кошельки по умолчанию устанавливают комиссию, которой достаточно, чтобы транзакция попала в следующий блок.
Если вы хотите, чтобы перевод ушел гарантированно быстро — сумму комиссии лучше увеличить, чтобы она была более привлекательна для майнеров и они быстрее обработали транзакцию
На mempool.space видно, какую комиссию нужно поставить, чтобы перевод ушел быстрее. Единица расчета комиссий в сети — Сатоши за виртуальный байт (Sat/vB). Время обработки указано примерное — точно рассчитать его невозможно.
Размер комиссии сети зависит не от пересылаемой суммы, а от размера транзакции в байтах и текущей комиссии сети за 1 байт информации. Вы платите не за количество средств, которые отправляете, а за размер информации, размещенной в блокчейн.
Размер информации состоит из:
- Количества предыдущих входов (транзакций)
- Количества выходов
- Метаданных заголовка: подписи, формат транзакции и другие.
Чем больше предыдущих входов содержится в транзакции, тем выше комиссия сети.
Разберем на примере:
В среднем, каждый предыдущий использованный вход добавляет примерно 140-300 байт информации в объем транзакции, а выход — от 25 до 40 байт. Метаданные заголовка — 10-15 байт.
Чтобы рассчитать размер транзакции, нужно перемножить количество входов и выходов на соответствующие размеры, а затем сложить их с метаданными заголовка. Финальная сумма умножается на размер комиссии за виртуальный байт.
Приблизительный расчет размера транзакции и самой комиссии для транзакции с двумя входами, двумя выходами при нынешней цене за 1 байт в 5 сатоши такой:
Размер= 2 входа*180 байт+ 2 выхода*34 байт+10 байт=438 байт
Комиссия = 438 байт*5 сатоши=2190 сатоши (0,67$)
Конечно, считать самостоятельно каждый раз комиссию при переводе — трудоемкая задача. Поэтому лучше это доверить вашему кошельку и пользоваться онлайн-сервисами для контроля средней комиссии.
Какая сегодня комиссия сети и примерная скорость обработки транзакции: mempool.space/ru/
Сколько транзакций ждет в мемпуле:
txstreet.com/v/btc
Графики со средней комиссией за период, размер транзакций и скорость обработки: blockchair.com/ru/bitcoin
Надеюсь, у нас получилось детально показать принцип работы транзакций в блокчейне Bitcoin. Подписывайтесь на Trustpool News — там только проверенная, полезная инфа о крипте и майнинге =)
Криптовалюта для хакера. Часть 2.
https://t.me/+W6jGA3-NpGUzODFi
Всем привет. С вами Алина.
Что же делает транзакция? Транзакция сообщает сети, что владелец какого-то биткоин адреса санкционировал передачу определённого количество биткоинов с этого адреса другому владельцу:
Биткоин транзакции построены подобно строкам в бухгалтерской книге с использованием двойной записи. Двойная запись это способ ведения бухгалтерского учёта при котором каждое изменение состояния средств организации отражается по крайней мере сразу на двух счетах обеспечивая общий баланс. Каждая биткоин транзакция содержит один или несколько входов и один или более выходов. Входы и выходы необязательно составляют одну и ту же сумму, а выходные данные транзакции составляют чуть меньше чем входные. Разница представляет собой комиссию за транзакцию, которую получает майнер за добавление этой транзакции в блок:
Транзакция также содержит подтверждение права собственности на биткоины, входные данные в форме цифровой подписи владельца, которая может быть независимо проверена любым участником сети.
Давайте рассмотрим простой пример который поможет вам разобраться в устройстве биткоин транзакций. Предположим что вы купили 0.01 BTC и продавец отправляет вам его на ваш адрес. Теперь на вашем адресе образовался непотраченный выход (UTXO — Unspent Transaction Output):
Далее вы решили отправить своему другу 0.005 BTC. Транзакция будет выглядеть следующим образом:
Ваш UTXO (непотраченный выход) 0.01 BTC используется в данной транзакции как вход, а выходов будет два. Первый выход это 0.005 BTC, которые идут на адрес вашего друга, а оставшиеся 0.0049 BTC идут на ваш новый биткоин адрес в виде сдачи. Таким образом ваш непотраченный выход разделился на две части, одна из которых ушла на адрес вашего друга и образовала у него на адресе UTXO в 0.005 BTC, а вторая часть отправилась как сдача на ваш новый адрес, который был создан вашим биткоин кошельком. Большинство биткоин транзакций будут похожи на ту, которую я сейчас рассмотрела, и чаще всего транзакции будут содержать сдачу, которая отправляется на ваш новый адрес автоматически.
Транзакции в биткоине могут быть и без сдачи. Это происходит в том случае, если UTXO полностью используется для формирования одного выхода:
То есть, если бы захотели отправить своему другу именно 0.0099 BTC, то сдачи бы на ваш новый адрес не было, потому что вы полностью потратили UTXO на один выход.
Но самая популярная структура биткоин транзакции выглядит вот так:
В случае с примером, на адресе вашего друга, после того как была отправлена ваша транзакция, сформировался новый UTXO размером в 0.005 BTC.
При формировании транзакции может быть также использовано несколько UTXO. Представим ситуацию, что вы несколько раз покупали биткоин или вам отправляли его знакомые. Каждый раз для получения транзакции вы использовали новый биткоин адрес. Представим что вам отправили пять транзакций на пять ваших адресов. На каждом из этих адресов сформировалось по одному UTXO на определённую сумму:
Далее вы хотите отправить кому-то 0.1 BTC из своего кошелька, но ни одного из ваших UTXO не хватает, чтобы организовать такую транзакцию, потому что по отдельности они все меньше чем 0.1 BTC. В биткоин транзакции можно объединить несколько UTXO с разных биткоин адресов, тем самым создав выход на нужную сумму. Транзакция будет выглядеть следующим образом:
Четыре UTXO с четырёх разных адресов используются для формирования двух выходов. Первый выход это 0.1 BTC который идёт получателю, а второй выход оставшаяся сдача, которая идёт на ваш новый адрес. Биткоин транзакции могут также иметь один вход и несколько выходов. Такая транзакция формируется при использовании одного UTXO для отправки средств сразу на несколько адресов:
Из всего выше написанного мной сделаем следующие выводы:
- Биткоин транзакции работают в определённом формате, который не похож на стандартные денежные переводы.
- Биткоин транзакции состоят из входов и выходов. Непотраченный выход (UTXO) на биткоин адресе образуется каждый раз при получении входящей транзакции.
- UTXO с биткоин адреса используется вами для создания исходящей транзакции.
- Биткоин транзакции связаны между собой через входы и выходы.
- Выходы одной транзакции используеются как вход или входы для другой транзакции, которые впоследствии формируют выходы для новой транзакции и так далее. Именно по анализу входов и выходов определённых транзакций можно связать несколько биткоин адресов, а далее узнать личность человека скрывающегося за этими адресами.
Как вы уже поняли — биткоин транзакции состоят из входов и выходов. Получая на свой адрес любую входящую транзакцию, на ней образуется непотраченный выход. Далее, используя UTXO (непотраченный выход) на ваших адресах, вы можете создать транзакцию из своих UTXO, в этой транзакции ваши непотраченные выходы будут использованы как входы для новой транзакции:
В этом случае мы видим, что у вас есть два входа на 0.5 BTC и 0.3 BTC. Вы хотите отправить кому-то 0.7 BTC, у вас одного входа по отдельности не хватает, поэтому в транзакцию объединяются эти два входа и формируют один непотраченный выход 0.7 BTC, а оставшаяся часть в виде 0.0999 BTC будет сдачей на ваш новый адрес, которая также формирует на вашем новом адресе непотраченный выход, который потом вы можете использовать для создания новой транзакции.
Вот пример того как выглядит стандартная биткоин транзакия где есть два входа и два выхода:
Input (вход). То есть кошелёк берёт два входа со своих адресов, объединяет их и отправляет на адрес получателя следующую сумму:
А оставшаяся часть идёт в виде сдачи:
То есть, сумма входов, всегда равняется сумме выходов минус комиссия за транзакцию, потому что вы всегда тратите весь выход. Вы не может откусить кусочек от выхода.
Вернусь опять же к примеру:
Если у вас выход 0.5 BTC, то вы не можете от него отщепнуть 0.25 BTC и оставить 0.25 BTC себе на адресе, абсолютно всегда идёт сдача. Вы отщипываете 0.7 BTC в данном случае от общей суммы, но сдача всегда возвращается вам на ваш новый адрес.
Теперь я постараюсь объяснить это более простым примером. Давайте представим так, что входы это обычные физические денежные купюры и любая транзакция, которая приходит на ваш адрес, формирует на нём новую купюру. Допустим я получила на свой первый адрес 150, на второй 250, на третий 500 и на четвёртый 70:
У меня на каждом адресе сформировалась купюра в соответствии с суммой на которую мне пришла входящая транзакция, 150, 250, 500 и 70. Эти купюры как раз таки и являются UTXO (непотраченными выходами). Теперь я могу эти купюры использовать для формирования новой транзакций, чтобы отправить свои деньги кому-то другому.
Допустим я хочу отправить человеку 120 рублей, представим что это рубли. Я ищу подходящий выход, в этом случае за меня это делает всё кошелёк автоматически, он подбирает самый подходящий выход, который более ближе подходит к вашей отправляемой сумме, в моём случае это 150. Я беру купюру в 150 рублей, отправляю человеку 120, а сдача от купюры идёт мне на мой новый адрес:
Сдача неполная, потому что 1 рубль идёт на комиссию майнерам. Принцип работы транзакции очень похож на оплату товаров в магазине, такой же принцип, только вместо комиссии на оплачу майнерам у вас там НДС (налог на добавочную стоимость).
Далее ваш адрес 5 уже находится в списке ваших выходов, а купюра с первого адреса убирается потому что мы её уже использовали:
Но не всегда хватает одной купюры чтобы оплатить транзакцию. Допустим вы хотите отправить транзакцию на сумму 800 рублей. У вас не хватает по отдельности каждого выхода, потому что каждый из них составляет меньше чем 800. Поэтому транзакция автоматически объединяет сразу три ваших купюры вместе и они в сумме составляют 900 рублей. Они объединяются вместе. Купюры суммой в 800 рублей идут на адрес получателя, а сдача в 99 рублей идёт на ваш шестой адрес:
Именно так работают биткоин транзакции. Предположим, что я эти купюры потратила, в 150, 250 и 500. У меня остаются только вот эти:
Абсолютно тот же принцип применяется к биткоинам. Просто заменяем рубли на BTC:
Допустим я хочу отправить сумму в 1.5 BTC, но у меня нет на одном выходе столько средств, поэтому объединяется два моих выхода в одну транзакцию и она идёт на адрес получателя, а оставшаяся сдача идёт обязательно мне, на мой седьмой адрес:
Так выглядит любая стандартная транзакция в сети биткоина. Сдачи не может быть только в том случае, если вы абсолютно полностью тратите свой выход. Это базовый принцип работы биткоина который необходимо вам знать. Именно биткоина, потому что в эфириуме и эфироподобных монетах транзакции работают по другому. В эфириуме как раз таки используются более простой принцип транзакций. В эфириуме есть один адрес, там просто есть баланс, который как раз таки отщипывается. Допустим у меня на балансе в эфириуме лежит 1500 рублей, а я хочу отправить человеку 1000. Я отправляю ему 1000, но при этом никакой сдачи нет, у меня просто отщипывается 1000 и у меня остаётся 500:
Тут нет никаких входов и выходов, здесь есть просто как банковский счёт, суммы именно отщипываются от основной. Так устроены транзакции эфириума. Огромное отличие от транзакций биткоина, потому что все транзакции в биткоине имеют входы и выходы.
Зачем это вообще нужно в биткоине? Это очень важная вещь для понимания того, как сохранить анонимность своих средств. Вам нужно понимать как контролировать свои непотраченные выходы. Я сейчас покажу небольшой пример для того, чтобы вы понимали почему это важно.
Давайте представим, что у вас есть четыре непотраченных выхода:
В рублях буду опять же объяснять для лучшего понимания. Вы всегда принимали каждую транзакцию на свой новый адрес, то есть, эти адреса никак не связаны между собой. Допустим транзакцию на адрес номер 1 вы получили с биржи Binance, транзакцию на адрес 2 вы получили от друга Миши, на третий ваш адрес пришла сдача с той суммы на которую вы купили что-то в даркнете, а на четвёртый адрес пришла сдача с покупки какой-то вещи в обычном легальном магазине:
Вы знаете, что данные транзакции нельзя никак связать, потому что вы сделали всё отдельно. С Binance вы вывели на один адрес, от Миши вы приняли транзакцию на второй адрес, вы купили запрещёнку в даркнете, а сдача пришла на третий адрес, а с белой покупки в магазине сдача пришла на чётвёртый адрес.
Что же теперь произойдёт если вы будете неграмотно заниматься отслеживанием своих входов и выходов? Например вы захотели отправить своему другу Пете 800 рублей. Из-за того, что у вас не хватает купюр по отдельности, у вас объединяются три купюры и формируют выход на адресе Пети:
Но теперь в блокчейне видно, что эти три ваших адреса использовались в одной транзакции. Теперь любой сторонний наблюдатель в блокчейне может знать, что эти три адреса принадлежат именно вам, одному человеку.
И допустим человек, который продал вам вещь в даркнете знает, что третий адрес это ваш, потому что с данного адреса ему пришла оплата. Но теперь увидев вашу новую транзакцию, он знает что ещё и ваши 2 и 4 адреса, тоже ваши. Например вы указали свой адрес номер 4 где-то для сбора пожертвования вконтакте или на ютубе, думая что он чист. А тут вам напишет в личные сообщения этот самый продавец и настойчивого попросит денег, иначе расскажет родственникам и вашим друзьям, что вы покупали что-то незаконное. Это ещё повезёт если напишет именно он, а не ФСБ придёт домой, ведь они также мониторят транзакции таким же образом, смотрят откуда они приходят человеку который продаёт что-то незаконное, а потом пытаются всё связать в одну цепочку.
Главное чтобы вы понимали как это всё происходит и не соединяли свои входы и не объединяли свои адреса, потому что это противоречит анонимности полностью. Ведь транзакции в блокчейне публичные и их может посмотреть любой человек.
Ещё есть такая вещь как пылевая атака. Предположим у вас есть биткоин адрес, вы купили что-то незаконное в даркнете и потратили с него полностью всю сумму, у вас там осталось 0. Вы забыли про этот адрес и пользуетесь другим. Вы ведёте свой ютуб канал, телеграм блог, вк страницу и оставили новый чистый адрес для сбора пожертвований, или ещё для какой-то цели, например дали его кому-то при продаже какой-то белой услуги. Хакер смотрит откуда приходили деньги на кошелёк продавца в даркнете и отыскивает полностью потраченные биткоин адреса покупателей с нулевым балансом. Далее он закидывает на эти адреса по 0,0000001 BTC. Сумма настолько маленькая, что её называют пылью и очень часто люди не обращают внимание на подобные транзакции даже не замечая изменения на балансе. Транзакция хакера образует непотраченный выход на вашем чёрном биткоин адресе. И когда вы в следующий раз что-то покупаете со своего чистого биткоин адреса, вполне законное и чистое, либо меняете деньги на валюту своей страны в обменнике и вам не хватает на нём средств, то ваш чистый адрес добавляет те самые 0,0000001 с чёрного адреса к чистому, а также других ваших адресов и объединяет это в одну транзакцию. Всё. Это отображается в открытом доступе блокчейна и хакер связывает ваши адреса. А далее просто вставляет в гугл поиск ваш чистый адрес и находит вашу страницу вк или ютуб канал где вы оставили свой чистый адрес, а потом начинает вас шантажировать и просит перевести деньги, либо расскажет вашим друзьям и родственникам о вашей покупке в даркнете. Таким же методом очень часто пользуются спецслужбы для вычисления покупателей запрещёнки.
Покажу на примере.
Я отправила себе две транзакции по 0.00003 BTC. В общей сумме у меня получилось 0.0006 BTC:
Можно посмотреть, что у меня сформировалось два непотраченных выхода с разными адресами которые я могу потом использовать для создания новой транзакции:
Давайте сейчас это продемонстрирую, вписываю сумму которую я хочу перевести:
Транзакция показывает, что у меня тут написано "ввод" и "вывод", на самом деле должно быть написано "вход" и "выход", немного неправильный перевод. Но тем не менее, кошелёк показывает, что я в транзакции использовала два своих непотраченных выхода с разными адресами и они стали входами в новой транзакции. То есть, при формировании транзакции, ваши непотраченные выходы становятся входами для новой транзакции. Из моих двух непотраченных выходов формируется одна транзакция, и там ещё сдача в виде 0.00005 BTC которая уйдёт на мой третий адрес.
После этого я нажимаю подписать и отправляю свою транзакцию в блокчейн биткоина.
Теперь я могу посмотреть в любом блокчейн обозревателе, как и любой другой человек абсолютно все транзакции всех людей. Давайте посмотрим как это будет выглядеть. Например в этом https://blockstream.info:
Два входа и два выхода. Именно так работают биткоин транзакции и важно понимать, что нужно правильно отслеживать свои непотраченные выходы, чтобы у вас не было связей между биткоин адресами которые не нужно между собой связывать.
Теперь поговорим о том как контролировать свои UTXO (непотраченные выходы). Это очень важно делать, чтобы сохранить анонимность своих средств.
Сейчас у меня открыт мой кошелёк Wasabi Wallet на котором есть несколько непотраченных выходов:
У данного кошелька есть отличная функция. Данная функция позволяет выбирать UTXO которые вы хотите потратить. Как вы видите у меня здесь есть 10 непотраченных выходов, то есть это было 10 транзакций на 10 моих разных адресов:
Соответственно из них я точно могу знать, у меня здесь есть заметки, то что самый нижний выход полностью чистый и не имеет никакой связи с моей личностью:
Если я отправлю этот выход куда либо, то эти деньги чистые и связать с грязными деньгами на этом кошельке их будет невозможно.
Но 9 выходов на этом кошельке у меня грязные:
Чтобы избежать того, чтобы эти деньги кто-то связал, я могу отметить галочками какие именно выходы я хочу использоваться для формирования транзакции. Допустим мне нужно отправить 0.05 чистых BTC куда-нибудь, я ставлю галочку на нужный мне выход и далее могу уже спокойно отправлять, зная что мои грязные деньги туда не попадут:
Если я выберу вот так вот, то объединю эти 2 выхода в одну транзакцию, грязные и чистые:
Если вы не выбираете это вручную, то кошелёк автоматически может это делать за вас, многие об этом даже не задумываются. А далее тут уже будет видно https://blockstream.info что два этих ваших выхода связаны между собой и принадлежат одному человеку. Соответственно вы сразу же свой чистый выход деанонимизируете полностью, потому что вы его использовали вместе со своими грязными деньги. Это делать ни в коем случае нельзя. Поэтому в Wasabi Wallet это невероятно полезная функция для сохранения вашей анонимности.
Если же я возьму Trust Wallet, то в нём такой функции нет:
Кошелёк сам, на своё усмотрение возьмёт выходы, соединит их вместе и отправит транзакцию. Это может привести к тому, что транзакция сформируется из выходов, из которых один будет чистым, а другой грязным. Поэтому я им не пользуюсь, потому что я не могу быть уверена в том, что данный кошелёк не сформирует мне такую ненужную транзакцию. Соответственно очень много кошельков также не имеют подобной функции. Если вы на это забиваете, то рано или поздно все ваши выходы перемешаются и стороннему наблюдателю будет известно какие адреса точно принадлежат вам. Очень много новичков даже не слышали о том, что существует UTXO, они используют один и тот же адрес, отправляют транзакции налево направо не задумываясь об этом.
Транзакции биткоин: полное руководство для новичков
Биткоин (BTC) – самая известная в мире криптовалюта. За годы ее существования появилось огромное количество материалов по работе с этой монетой. В интернете можно найти статьи по устройству блокчейна, логике формирования блоков в распределенной сети, комиссиям, которые взимаются при переводах внутри блокчейна биткоина, и прочим вопросам.
Тем не менее, часто информация подается сложно, особенно для новичков. Редакция cryptonisation.com решила написать небольшое, простое и понятное руководство по BTC для новых пользователей. Вы узнаете: как происходят транзакции в сети Биткоин, где их отслеживать , почему они могут зависать на этапе обработки и как это можно исправить .
Что такое транзакции Bitcoin и как они работают
Биткойн – первая и самая популярная в мире криптовалюта
Говоря по-простому, биткойн-транзакция – это перевод биткойнов с одного адреса на другой . Возможность передавать биткоины друг другу обеспечивают ключи , которые есть у каждого участника blockchain.
Помимо понятия “ключа” используется также определение адреса . Адрес – это специальная форма открытого ключа , которая используется для краткости и безопасности, т.е. по сути этот тот же открытый ключ, записанный в другой форме. Часто адрес и открытый ключ используются как синонимы, например, когда разговор заходит про биткоин кошельки.
Принцип работы транзакций BTC
Транзакции в сети Биткоин состоят из трех основных элементов :
- Входы (адрес/а, откуда поступил блокчейн);
- Выходы (адрес/а, куда передается блокчейн);
- Заголовок со служебными сведениями.
Когда пользователь сети оформляет транзакцию, она передается в сеть, попадает в вычислительный узел (мем-пул), где скапливаются все ожидающие подтверждения транзакции, и становится в очередь . Майнеры высчитывают новые блоки сети и добавляют в них стоящие в мем-пуле транзакции . Как только хеш нового блока, в который включена транзакция пользователя, будет найден – перевод запишется в сеть и биткоины будут переданы по указанному открытому ключу.
Вес транзакции Биткоин
Важным показателем транзакции является ее вес . Он влияет на уровень комиссии внутри сети, и, соответственно, на скорость ее проведения. Вес вычисляется в байтах и зависит от количества входов и выходов в транзакции. Чем их больше, чем выше вес транзакции.
Хеш транзакции
Хеш – это кусочек кода , который получается после обработки любой информации специальной хеш-функцией (алгоритмом для шифрования). Хеш удобно использовать потому, что кусочек кода, который получается при шифроватнии одних и тех же данных, всегда одинаковый (т.е. будет состоять из одних и тех же символов).
Хеш блока используется для того, чтобы подтверждать истинность текущего блока (в который входит наша транзакция) и истинность предыдущего (чтобы не потерялись сведения о прошлых транзакциях). Именно такой хеш ищут майнеры, а затем записывают эту информацию в новый блок блокчейна.
Хеш транзакции и хеш блока – это разные вещи
Хранение транзакций
Отправленные пользователем блокчейна транзакции хранятся в мем-пуле , пока не будут подтверждены. Для того, чтобы транзакция попала в мем-пул, ее нужно создать и передать в блокчейн. 🚩
Что влияет на скорость транзакции Биткоин
На скорость транзакции в блокчейне биткоина влияют:
- Вес транзакции;
- Установленная пользователем комиссия , которую он готов платить за транзакцию;
- Настройки мем-пулов. Мем-пулам позволено устанавливать порог комиссии, с которыми они готовы работать . Если уровень комиссии за транзакцию, которую задал пользователь, ниже этого порога, то транзакция будет обрабатываться в другом мем-пуле, где настройки разрешают работать с заданной пользователем комиссией;
- Текущая нагрузка в сети – количество совершаемых на текущий момент транзакций.
Проверка транзакции Биткоин: как и где посмотреть
Для отслеживания статуса транзакции в реальном времени, можно использовать специальные сервисы мониторинга . Помимо статуса, они позволяют увидеть время создания операции перевода, количество входов и выходов, вес и прочие характеристики транзакции. К примеру, это позволяет делать blockchain.com в разделе Explorer . Для того, чтобы проверить статус транзакции, нужно:
- Перейти на страницу сервиса 👉 blockchain.com/explorer;
- В поле поиска Search your transaction, your address or a block ввести TXID транзакции;
- На открывшейся странице будет собрана вся информация по текущему состоянию транзакции.
Страница Explorer сервиса blockchain.com
Статусы транзакций
Всем транзакциям, попадающим в мем-пулы, присваиваются статусы. Проверку статуса можно осуществить по ID транзакции в сервисах мониторинга. Выделяются два вида статусов:
- Unconfirmed – неподтвержденная транзакция;
- Confirmed – подтвержденная транзакция.
На платформе blockchain.com при подтверждении транзакции показывается не статус Confirmed , а цифра, которая обозначает количество блоков в блокчейне с подтвержденной транзакцией . Если транзакция не подтверждена, на ее странице будет видна красная плашка Unconfirmed .
Страница транзакции без подтверждения
Подтвержденные и неподтвержденные транзакции
В блокчейне биткоина подтвержденной считается транзакция , которая попала в 2-6 новых блоков . Каждый следующий блок биткоина создается за 10 минут, т.е. минимальным временем подтверждения транзакции (при умеренной загрузке сети) считается диапазон в 20-60 минут .
Что делать с неподтвержденными транзакциями
Если дожидаться подтверждения транзакции не хочется, то ее можно отметить или ускорить. Для этого существует несколько решений. 💡
Как ускорить транзакцию
Для ускорения транзакции можно использовать два подхода:
- Опция Replace-by-fee (RBF) – это специфическое сообщение майнеру, что вы готовы платить больше, если с первично указанной комиссией выполнить транзакцию не получается. Такую функцию предоставляют некоторые программные биткоин-кошельки, например: Bitcoincore, Green Address или Electrum . В некоторых кошельках она включена по умолчанию, в некоторых ее нужно включить вручную. В этом случае пользователю не потребуются дополнительные средства на кошельке;
- Опция Сhild-pay-for-parent (CPFP) – этот способ основан на наличии выхода “для сдачи” в каждой биткоин транзакции и может использоваться в любом кошельке. Упомянутый выше выход можно использовать как вход для новой заявки , в которой пользователь переводит биткоин сам себе. При этом, во второй заявке устанавливается высокая комиссия, чтобы майнеру было интересно провести и первую, и вторую заявку и получить обе комиссии (в этом способе майнер не получит вторую комиссию, если не получена первая). При этом нужно учесть, что юзеру необходимо иметь средства на обе заявки и обе комиссии.
Транзакции биткоина можно ускорить
Как отменить транзакцию
Сперва напомним, что подтвержденную транзакцию отменить невозможно . Транзакцию, которая не подтверждена, можно отменить способом, который называется Double Spending и в официальных документах считается атакой на блокчейн.
В нем старая заявка заменяется новой с указанием повышенной комиссии. В этом случае необходимо создать заявку с тем же количеством биткоинов для передачи, но увеличить в ней комиссию за перевод . Тогда новая заявка с теми же условиями, что и старая, отменит более раннюю транзакцию. При использовании такой опции пользователю должно хватать биткоинов на обеспечение второго перевода.
Что делать с зависшими транзакциями
Для зависших транзакций необходимо использовать один из описанных выше способов решения проблемы, либо дождаться их исполнения. ☝
Комиссии
За каждую транзакцию в блокчейне биткоина берется комиссия. Рассмотрим куда, кому и за что она идет.
На что и куда идут комиссии при транзакции
Комиссии при транзакциях в блокчейне достаются майнерам , за то, что они рассчитывают новые блоки и подтверждают переводы внутри блокчейна. Если майнер первым рассчитал новый блок, то он получается плату за его нахождение + все комиссии за транзакции , попавшие в блок. 💰
Как рассчитать комиссию при транзакции BTC
Чтобы рассчитать комиссию за перевод BTC, можно воспользоваться специальными сервисами. На основании информации из мем-пулов, такие сервисы собирают статистику по наиболее выгодным комиссиям на текущий момент. К ним относится, например, сервис bitcoinfees.earn.com.
Главная страница bitcoinfees
В левом столбце Fees таблицы на главной странице сервиса указана величина комиссии в сатоши за байт веса транзакции, в столбцах Delay и Time – задержка в количестве блоков и время, которое потребуется на подтверждение транзакции. Рекомендуемые размеры комиссий указаны в таблице зелеными полосками.