В криптовалютах, таких как Биткойн , неизрасходованный вывод транзакции ( UTXO ) представляет собой абстракцию электронных денег . Каждый UTXO аналогичен монете и имеет определенную стоимость в соответствующей валюте. Каждый UTXO представляет собой цепочку владения, реализованную в виде цепочки цифровых подписей, в которой владелец подписывает сообщение (транзакцию), передавая право собственности на свой UTXO на открытый ключ получателя .
UTXO определяет вывод транзакции блокчейна , который не был потрачен, то есть может использоваться как ввод в новой транзакции. Биткойн — это пример криптовалюты, использующей модель UTXO.
СОДЕРЖАНИЕ
Модель UTXO
Модель UTXO является общей для многих криптовалют, в первую очередь для биткойнов. Криптовалюты, использующие модель UTXO, не используют счета или балансы. Вместо этого отдельные монеты (UTXO) передаются между пользователями так же, как физические монеты или наличные.
Набор UTXO
Общее количество UTXO, присутствующих в цепочке блоков, представляет собой набор , каждая транзакция потребляет элементы из этого набора и создает новые, которые добавляются в набор. Таким образом, набор представляет все монеты в конкретной криптовалютной системе. Полный набор UTXO можно суммировать для расчета общего предложения криптовалюты в данный момент времени.
Выходы — это надмножество UTXO. Соответственно, UTXO являются подмножеством надмножества выходов . Продолжительность жизни биткойн-UTXO была изучена.
В случае действительной транзакции блокчейна неизрасходованные выходы (и только неизрасходованные выходы) могут использоваться для финансирования дальнейших транзакций. Требование о том, чтобы в дальнейших транзакциях можно было использовать только неизрасходованные средства, необходимо для предотвращения двойных расходов и мошенничества.
По этой причине входные данные в цепочке блоков удаляются из набора UTXO, когда происходит транзакция, в то время как в то же время выходы создают новые UTXO, которые добавляются в набор UTXO. Эти неизрасходованные выходы транзакций могут использоваться (держателями закрытых ключей ; например, лицами с кошельками с криптовалютой ) для будущих транзакций.
Происхождение
Модель UTXO может быть отнесена к предложению Хэла Финни « Многоразовые доказательства работы» , которое, в свою очередь, основано на предложении Адама Бэка 1997 года по Hashcash .
Смотрите также
Рекомендации
Эта статья о криптовалюте — незавершенная . Вы можете помочь Википедии, расширив ее .
Источник
Главная
Ethereum
Litecoin
Mining
Анализ рынка
Прогноз цен Cardano: ADA Coin нацелена на увеличение в краткосрочной перспективе.
Прогноз цены Ripple: 11 июня 2021 год.
Прогноз цены Litecoin на июнь 2021 года.
Криптовалюта с низкими ценами и высоким потенциалом роста.
Биткоин, Ethereum и Dogecoin на подъеме: развеялись ли темные тучи?
Прогноз цены биткоинов на 9 июня 2021 г.
Прогноз цены Ripple (XRP) на 8 июня 2021 г.
Ценовой прогноз Shiba Inu на 8 июня 2021 г.
Прогноз цены биткоинов на 8 июня 2021 г.
Технический анализ и мнения экспертов по THETA, CHZ и ENJ.
Прогноз цен Cardano 7 июня: достигнет ли ADA 2$?
Прогноз цены Dogecoin: 7 июня 2021 г.
Что такое вывод неизрасходованных транзакций (UTXO)?
Что такое вывод неизрасходованных транзакций (UTXO)?
Что такое вывод неизрасходованных транзакций (UTXO)?
Содержание статьи:
В этой статье мы постараемся ответить на такие вопросы, как UTXO, что делает UTXO , что такое неизрасходованный вывод транзакции, что такое UTXO Bitcoin.
Неизрасходованный вывод транзакции, известный как UTXO, является важной концепцией в мире блокчейнов. Это название может показаться немного запутанным, но саму концепцию понять нетрудно. В этой статье объясняется все, что вам нужно знать об UTXO.
Термин неизрасходованный вывод транзакций (UTXO), наблюдаемый во многих криптовалютах, включая Bitcoin ( BTC ); Это означает использование выходных данных переводов в качестве входных данных для новой транзакции.
Этот метод, имеющий решающее значение в экосистеме криптовалюты и может быть переведен на турецкий язык как «неизрасходованный вывод транзакции», также служит для определения начальной и конечной точки транзакций в цепочке блоков . Благодаря модели UTXO можно определить путь, пройденный майнером от создания криптовалюты до кошелька конечного пользователя.
↑ UTXO можно объяснить простой аналогией
Неизрасходованный результат транзакции — это результат транзакции, которую пользователь получил и может потратить в будущем. Это правда, потому что, как следует из названия, это неизрасходованный результат транзакции. Но что именно это значит? Прояснить UTXO поможет аналогия.
То же самое и с UTXO. В то время как вы можете увидеть один баланс при входе в ваш крипто кошелек, вы можете иметь один или несколько UTXOs в вашем бумажнике. Размер этого UTXO может варьироваться, но в совокупности его сумма равна общему балансу вашего кошелька.
Продолжим нашу аналогию еще на один шаг. Когда вы покупаете предмет за наличные, вы, возможно, не сможете предоставить точную сумму денег, необходимую для его оплаты. Например, вы покупаете чашку кофе за 350 . У вас в кошельке 450 , но у вас нет ровно 350 на оплату кофе.
Чтобы заплатить за кофе, вы должны переплатить одну (или несколько) банкнот, а затем получить взамен сдачу. Вы можете заплатить за кофе банкнотой в 500, в этом случае вы получите 150 сдачи.
То же самое происходит при отправке криптовалюты. Допустим, у вас есть 740 BTC. Представьте свой баланс в трех формах UTXO: один UTXO на 320 BTC, 215 BTC и 205 BTC.
Если вы хотите отправить меньшую сумму BTC на другой адрес, ваш кошелек должен отправить хотя бы один UTXO для завершения транзакции. Вы не можете разрезать банкноту 100 пополам и отдать часть кассиру и заплатить за предмет 50, и вы не можете отправить половину UTXO для завершения крипто-транзакций. Вы должны отправить весь UTXO, а затем внести изменения.
Допустим, вы хотите отправить другу 30 BTC. Вы должны отправить один из своих UTXO (320, 215 или 205 BTC), чтобы завершить транзакцию. Ваш друг получит один UTXO 30 BTC. В зависимости от того, какой UTXO отправлен, вы в конечном итоге получите новый UTXO меньшего размера за 290, 185 или 175 BTC.
Так что, если вы хотите отправить другу 350 BTC? По сути, происходит то же самое, но на этот раз вам нужно отправить два полных UTXO для завершения транзакции. Ваш друг все равно получит 350 BTC, а взамен вы получите новый UTXO (70, 175 или 185 BTC, в зависимости от того, какие два UTXO были отправлены для совершения платежа).
↑ От майнера к потребителю
Давайте рассмотрим пример, и предположим, что цена дома составляет 1,3 BTC. В этом случае 0,1 BTC от Мари не потребуется, и они останутся в кошельке Анны.
Если бы цена дома составляла 1 BTC, на этот раз, помимо 0,5 BTC от Emre, 0,8 BTC от Erhan были бы входом в транзакцию. 1 BTC в разделе вывода будет переведен в качестве жилищной оплаты, а оставшиеся 0,3 BTC будут размещены на новом адресе. 0,1 BTC от Мари останется на прежнем уровне. Таким образом, у Ayşe было бы в общей сложности 0,4 BTC (0,3 BTC увеличилось за счет покупки жилья и 0,1 BTC не было потрачено у Мари), стоящих на двух разных адресах.
В конце концов, система UTXO работает как протокол отслеживания, чтобы определить, где находятся криптовалюты и откуда они берутся. Поскольку UTXO не могут быть потрачены частично, они полностью обрабатываются, разделяются, и каждый раз создаются новые и передаются бизнес-партнерам.
↑ Различия между Fiat Money и UTXO
Приведенной выше аналогии, вероятно, будет достаточно, чтобы дать вам твердое представление о концепции UTXO, но это не идеальный пример. Аналогия нарушается несколькими способами.
Во-первых, приведенные выше примеры не совсем точны, потому что для обработки транзакции вам придется заплатить комиссию за транзакцию. Когда вы отправляете определенную сумму денег на другой адрес, новый UTXO, который вы получаете взамен, будет представлять собой сумму исходного UTXO, как в валюте, которую вы отправляете, так и в сумме денег, которую вы платите.
Новый UTXO = (Сумма существующих UTXO) — (сумма валюты, отправленная на другой адрес) — (комиссия за транзакцию для этой цепочки блоков)
Комиссии за транзакции варьируются от блокчейна к блокчейну, а также в разное время в одном блокчейне.
Еще одна причина, по которой наша предыдущая аналогия UTXO не работает, заключается в том, что бумажные банкноты имеют фиксированную стоимость. Другими словами, бумажные банкноты ограничены стоимостью, которую правительства выбирают для печати.
Предустановленные значения одна купюра, которая существует, 5, 10, 20, 50, 100 и 200 долларов. В европейском регионе принимаются только следующие банкноты евро: 5 евро, 10 евро, 20 евро, 50 евро, 100 евро, 200 евро и 500 евро. Когда дело доходит до банкнот, монеты игнорируются. Вы не можете создать нужное количество банкнот, потому что стоимость каждой банкноты предопределена.
То же самое не относится к UTXO. UTXO может быть любым. На практике это дает несколько важных преимуществ. Во-первых, он обеспечивает гораздо большую гибкость, чем фиатная валюта. Фиатная валюта может иметь BTC на сумму 1 миллион долларов в одном UTXO вместо тысяч фиатных банкнот, необходимых для хранения той же суммы наличными.
Разработчики блокчейнов имеют возможность писать код, который может оптимизировать способ упаковки небольших транзакций с криптовалютой в виде «банкнот» (UTXO). Это означает, что команда разработчиков может работать вместе, чтобы поддерживать управляемый вес данных в блокчейне. Чем лучше разработчики цифровых кошельков, тем эффективнее создаются размеры UTXO. Более эффективное производство UTXO означает минимальный вес данных и оптимальную скорость обработки данных.
Однако технология Blockchain имеет ограничение по сравнению с fiat: количество и количество UTXO в цифровом кошельке каждого человека должны быть записаны.
↑ Небольшой недостаток
В результате большинства протоколов блокчейна, которые требуют, чтобы все транзакции выполнялись в публичном реестре, единственный раз, когда UTXO объединяется или разбирается на большие или меньшие размеры, — это момент, когда вы участвуете в транзакции в публичной цепочке блоков. Если вы не отправляете или не получаете средства, количество UTXO, которое вы храните в своем кошельке, не может быть изменено.
На самом деле это небольшой недостаток. Количество и размер UTXO в вашем кошельке со временем естественным образом изменится. У вас могут быть меньшие UTXO, которые составляют ваш полный баланс, или иногда у вас есть большой UTXO, который включает их все.
Это ответ на вопрос, что такое UTXO. С точки зрения конечного пользователя обычно нет необходимости понимать концепцию UTXO. Баланс вы видите в вашей криптовалюте кошельке это количество криптовалюты у вас есть, независимо от количества и стоимости UTXO , что составляет эту сумму .
Источник
Биткоин транзакции. Ответы на популярные вопросы
Большинство криптоэнтузиастов сталкивались с проблемой когда их транзакция зависала в блокчейне, либо попросту не отправлялась. Мы собрали популярные вопросы и ответы на них касательно криптовалютных транзакций.
Получите скидку на торговую комиссию в 10% на бирже Binance по коду «CRYPTOSLIVA» или по регистрации по этой ссылке
Почему биткоин транзакция не подтверждается?
Скорее всего, отправитель выставил недостаточную комиссию. Может оказаться так, что месяц, неделю, или даже сутки назад её хватало для быстрого подтверждения, а сегодня — нет.
Неподтвержденная транзакция — лишь намерение передать монеты, а не его реализация.
Вторая возможная причина — отправитель потратил выход неподтвержденной транзакции: получил биткоины и, не дожидаясь подтверждений, отправил часть из них дальше.
Как проверить блокчейн транзакцию
Для того что бы отследить блокчейн транзакцию нужно убедиться, что ваша транзакция действительно ожидает подтверждения. Для этого копируем id вашей транзакции, вставляем в строку поиска blockchair.com (или blockchain.com, или bitaps.com). Далее ищем глазами строку «нет подтверждений» («unconfirmed»). Нашли? Значит, транзакция ждет подтверждения.
Сервис поиска транзакций
Я поставил рекомендуемую комиссию, транзакция зависла
Есть только рекомендуемая кем-то комиссия. Этот кто-то может ошибиться. Ошибочные рекомендации иногда выдаёт большинство кошельков (в том числе bitcoin core).
Куда попадет криптовалюта с зависших транзакций
Рано или поздно «зависшая» криптовалюта дойдет до получателя, либо станет доступна в кошельке у отправителя. Она не может зависнуть навсегда, или просто исчезнуть.
Как узнать, время обработки транзакции?
После того как ввели данные своей транзакции в сервис blockchair.com, такую строку «Priority: 14498/22321» («В очереди: 14498/22321»). Первое число — ваше текущее место в очереди, второе — общая длина очереди. В блоке (раз в 10 минут в среднем) обычно 2-3 тысячи транзакций. Можно примерно оценить время в очереди.
Не забываем что ваша позиция в очереди может стать ниже, так как приоритет имеют транзакции с наибольшей комиссией.
Биткоин транзакция не подтверждается что делать и как ускорить
Бывают ситуации когда при отправке биткоинов и других криптовалют транзакция зависает. Для того что бы ее ускорить есть несколько вариантов:
Использовать replace-by-fee. Это может сделать только отправитель и если в кошельке стояла галочка до отправки; не все кошельки поддерживают; недорого, несложно.
Использовать CPFP (child pays for parent). Это может сделать получатель и обычно отправитель, немного дороже, не очень сложно.
сделать даблспенд (двойную трату). Может сделать только отправитель, нужен доступ к приватным ключам или hd seed (12/24 слова), недорого, относительно сложно.
использовать бесплатный «ускоритель транзакций» от viabtc. Может сделать кто угодно, бесплатно, несложно, но сервис часто перегружен и есть ограничения на транзакцию (комиссия дожна быть не менее 10 сат/байт). Этот сервис приносит прямые убытки своим создателям и может в любой момент прекратить работу. Ещё есть аналогичный «ускоритель транзакций» от antpool (необходим аккаунт на antpool.com). Иногда не работает.
использовать один из платных ускорителей транзакций от пулов viabtc, btc.com. Может использовать кто угодно, но относительно дорого.
использовать один из бесплатных/платных ускорителей в телеграмме. Те из них, что работают — переиспользуют ускорители от пулов. Ещё попадаются фальшивые ускорители типа такого: bitaccelerate.com. Они вообще ничего не ускоряют, а только рассылают вашу транзакцию. Как правило, это не имеет смысла.
Как использовать replace-by-fee?
Просто нажать кнопку в кошельке. Для Bitcoin core: открываем вкладку с транзакциями, правой кнопкой по проблемной транзакции, затем «Increase transaction fee».
Как использовать CPFP? Как быть, если я получатель транзакции?
Такой способ есть и он подходит для получателей; для отправителя он также подойдёт, если у вашей транзакции была «сдача» (обычно она есть). Этот способ немного дороже. Можно попробовать задействовать механизм CPFP (child pays for parent). Для этого вы должны потратить один из выходов проблемной транзакции с комиссией, которой хватит на обе транзакции сразу — новую и старую.
Будьте внимательны. Если одна из транзакций — «предков» вашей тоже ещё не подтверждена, то комиссию надо будет рассчитывать на три (или более) транзакции.
То есть просто создаёте транзакцию с одним входом (это должен быть один из выходов проблемной, например — сдача) и пересылаете биткоины себе же. Комиссию ставите такую, чтобы её хватило на обе сразу: для этого суммируете их размеры, умножаете на число из пункта «Как выбрать адекватную комиссию?», делите на размер новой в килобайтах и вписываете в графу «custom transaction fee» при отправке транзакции. Пример для кошелька Bitcoin Core:
Пусть вы получатель и должны получить 0.08500148 btc.
Для того, чтобы воспользоваться CPFP, в Bitcoin Core нажимаем «Настройки» -> «Параметры» -> «Бумажник» («Settings» -> «Options» -> «Wallet»); ставим галочки у «включить управление входами» («Enable coin control features») и «тратить неподтвержденную сдачу» («Spend unconfirmed change»), если они не стоят (потом можно будет их убрать).
Теперь закрываем окно настроек и нажимаем «Отправить» («Send»), там нажимаем кнопку «Входы…» («Inputs…») и ставим галочку у суммы 0.08500148; потом «Ок», получателем ставите свой адрес; количество ставите 0.08500148 и галочку «вычесть комиссию из суммы» («subtract fee from amount»); комиссию ставите «выборочно» («custom»), «за килобайт» («per kilobyte») и пишете с рассчетом на 2 транзакции по формуле ((размер старой транзакции)/(размер новой транзакции) + 1)*(адекватная комиссия за килобайт и лучше побольше). Отправляете.
Всё. Теперь ждёте.
Как сделать даблспенд (двойную трату)?
Для кошелька Bitcoin Core действуем по следующему алгоритму:
Закрываем кошелек, запускаем его с параметром -zapwallettxes и ждем пока он откроется. Когда кошелек запустится, все неподтвержденные транзакции из него исчезнут (но они ещё есть в сети!). Для bitcoin core 0.14 и выше потребуется перед запуском ещё удалить (переименовать или перенести) файл mempool.dat. Почему не с параметром -salvagewallet? -zapwallettxes не затронет имена ваших адресов а -salvagewallet удалит их. Кроме того, bitcoin core может упасть при запуске с -salvagewallet и тогда ваш wallet.dat будет поврежден. Правда, рядом с ним заранее будет создана копия.
Теперь можно создавать новую транзакцию, не забыв поставить адекватную комиссию. Но! Поскольку ваша старая транзакция ещё осталась в сети, она может когда-нибудь неожиданно подтвердиться. Если вас это не устраивает, то у новой транзакции хотя бы один из входов должен будет совпадать с одним из входов старой. Для этого смотрим на странице вашей транзакции на сайте blockchair.com или аналогичном графу «inputs» (входы), запонинаем точный размер входа в биткоинах. После этого при создании транзакции в кошельке нажимаем на кнопку «inputs…», находим в списке такое же точно число в биткоинах и выбираем его (если их несколько, то выбирайте с тем же адресом получения и временем). После этого выбираем ещё какие-нибудь входы, чтобы общая сумма была больше суммы транзакции с будущей комиссией; лучше выбирать с запасом. Далее заполняем все поля как обычно, (не забываем про комиссию!) и отправляем. Иногда пишут, что всё это можно не делать, а просто подождать 2-3 суток, чтобы старая транзакция сама «канула в лету». О том, что иногда это может привести к проблемам, можно прочитать тут (англ).
Как отменить биткоин транзакцию?
Если транзакция подтвердилась (включена в блок), отмениться или быть отменена она не может. Чтобы отменить неподтвержденную транзакцию, необходимо создать конкурирующую с ней транзакцию и добиться её включения в блок — смотрите ответ на вопрос «Как сделать даблспенд (двойную трату)?». В любом случае, гарантировать отмену тут нельзя.
Сама неподтвержденная транзакция отмениться не может — может лишь поменяться отображение в вашем кошельке. Далее смотрите ответ на следующий вопрос.
Моя транзакция висела неподтвержденной несколько дней, а затем пропала и деньги вернулись обратно. Теперь все хорошо и я могу забыть про всё это?
Нет! Ваша старая транзакция ещё есть в сети и может неожиданно подтвердиться. Чтобы этого избежать, надо сделать так, чтобы была новая транзакция и конкурировала со старой по входам. Если вы вообще передумали делать тот перевод, то можно будет сделать перевод себе самому. Самый простой, но иногда более затратный вариант — просто переслать себе все биткоины на этот же адрес.
Как избежать зависания транзакций?
Выставлять адекватную комиссию.
Включить в кошельке механизм replace-by-fee и помечать все транзакции как replaceable, если ваш кошелёк его поддерживает (bitcoin core и electrum поддерживают). Это позволит при возникновении проблемы очень легко повысить комиссию.
Какая комиссия за транзакцию будет оптимальной?
Для того что бы не ошибиться в выборе комиссии для биткоин транзакции существуют специальные сервисы. Рекомендую btc.com, jochen-hoenicke.de и bitcoinfees.earn.com. Если понять, что изображено на диаграмме, тяжело, просто открываем первую ссылку и рекомендацию сверху страницы вписываете в графу «custom transaction fee» при отправке транзакции.
Обратите внимание, что величина комиссии зависит от размера транзакции в байтах (а ещё точнее — от её веса), а не от количества пересылаемых биткоинов.
Будьте внимательны — многие популярные кошельки иногда ошибаются с комиссией и могут вас подвести. Для срочных или важных транзакций обязательно проверяйте комиссию по состоянию мемпула.
У меня получается очень большая комиссия, как сэкономить?
Во-первых, если вам надо сделать несколько переводов — объедините их: создайте одну транзакцию с несколькими выходами. Размер в байтах такой транзакции будет меньше, чем нескольких обычных транзакций; а значит — меньше общая комиссия при неизменной плате за байт. В типичном случае экономия для двух переводов будет в 1.7 раза; для десяти — в 4 раза.
Во-вторых, не полагайтесь на комиссию, которую рекомендует вам кошелек: она может быть как занижена, так и завышена. Самостоятельно оцените её через один из сервисов, показывающих состояние мемпула (см ответ на вопрос «Как выбрать адекватную комиссию? Где посмотреть состояние мемпула?»). Обычно экономия от 10% до 30% (1.5 раза), хотя иногда может быть и до 10 раз.
В-третьих, можно выставить вручную комиссию гораздо меньше рекомендуемой и транзакция всё равно пройдёт, если мемпул («очередь») почти пуст. При пустом мемпуле успешно проходят транзакции с комиссией от 1000 сатоши за килобайт, но придётся подождать несколько часов или даже суток и есть вероятность, что транзакция не пройдёт. Если нужно перевести деньги быстро, не пытайтесь так сэкономить.
Ну и последнее: можно вручную подбирать входы и величину транзакции так, чтобы не было сдачи; экономия до 15%. Или можно заранее консолидировать входы по сниженной ставке за байт — когда комиссии ниже или возможность подождать.
Можно ли тратить неподтвержденные монеты?
Можно. Но комиссию вы должны выставить такую, чтобы её хватило и на родительскую транзакцию со всеми её неподтвержденными предками.
Как вычислить размер обычной (не-сегвит) транзакции?
Примерная формула для обычных (не-сегвит, сжатые (compressed) ключи) транзакций и для большинства современных кошельков (bitcoin core, electrum, ledger …) 10+148*(число входов)+34*(число выходов). Реальное значение может отличаться на несколько байт в меньшую сторону в зависимости от конкретных ключей. Примерная формула для обычных транзакций с несжатыми (uncompressed) ключами (в основном использовались раньше, кошелек Armory): 10+180*(число входов)+34*(число выходов).
Как вычислить размер SegWit-транзакции?
Начнём с того, что у сегвит-транзакции несколько размеров. Чтобы всех запутать и искусственно сделать сегвит-транзакции дешевле, для них было изменено понятие размера. Для рассчета комиссии нам нужно считать не реальный размер сегвит-транзакции на диске, а оплачиваемый (vsize, он же weight/4).
Формула для сегвит-адресов на «3» (если все входы и выходы — P2SH-P2WPKH): 11+91*(число входов)+32*(число выходов).
Формула для сегвит-адресов на «bc1» (если все входы и выходы — P2WPKH): 11+68*(число входов)+31*(число выходов).
Как считать для сегвит-транзакции, в которой есть входы и/или выходы разных типов: 11+68*(число входов типа P2WPKH)+91*(число входов типа P2SH-P2WPKH)+148*(число legacy входов)+31*(число выходов P2WPKH)+32*(число выходов P2SH-P2WPKH)+34*(число legacy входов).
Реальное значение может отличаться на несколько байт в меньшую сторону в зависимости от конкретных ключей. Пожалуйста, не спрашивайте, как посчитать размер для segwit-multisig транзакции.
Эксперт и главный редактор портала CRYPTOSLIVA. Участник конференций посвященных финтеху и криптовалютам в частности. Магистр в области информационной безопасности.