- Как сделать транзакцию биткоинов
- Table of Contents
- Биткойн существует в форме записей о биткойн-транзакциях
- Пример биткойн-транзакции
- Как работает биткойн-транзакция?
- Почему подтверждения некоторых биткойн-транзакций занимают так много времени?
- Подробнее о входах и выходах биткойн-транзакций
- Каковы комиссионные сборы за биткойн-транзакции?
- Биткоин транзакции. Ответы на популярные вопросы
Как сделать транзакцию биткоинов
Bitcoin (BTC) был создан как одноранговая электронная платежная система. Независимо от того, отправляете вы или получаете платеж в BTC, стоит понимать, как происходит транзакция. Транзакции Bitcoin — это сообщения, как электронные письма, которые подписаны цифровым способом с использованием криптографии и отправлены всей сети Биткойн для подтверждения. Транзакции публичны и могут быть найдены в цифровом реестре под названием блокчейн.
История всех транзакций в BTC ведет назад, к точке, когда биткойны были впервые произведены.
Table of Contents
- Биткойн существует в форме записей о биткойн-транзакциях
- Пример биткойн-транзакции
- Как работает биткойн-транзакция?
- Почему подтверждения некоторых биткойн-транзакций занимают так много времени?
- Подробнее о входах и выходах биткойн-транзакций
- Каковы комиссионные сборы за биткойн-транзакции?
Биткойн существует в форме записей о биткойн-транзакциях
Мы определяем биткойн как цепь цифровых подписей. Каждый владелец отправляет свой биткойн следующему путем цифрового подписывания хэша предыдущей транзакции и открытого ключа следующего владельца, после чего добавляет эту информацию в конец койна. Получатель платежа может проверить подписи, чтобы верифицировать цепочку владельцев.
Здесь стоит упомянуть, что биткойны (Bitcoin) не «существуют» в физическом аспекте, а только в цифровом. Думайте о блокчейне как о записи транзакций между разными биткойн-адресами. Записи об этих транзакциях обновляются сетью Bitcoin и публикуются на всех ее узлах при изменении баланса. Вы даже можете использовать один из наших обозревателей блоков, если хотите посмотреть историю и текущий баланс любого существующего адреса BTC.
Пример биткойн-транзакции
Марк хочет отправить биткойны Джессике. В сущности транзакция с BTC состоит из трех частей:
Ввод: Это запись адреса BTC, с которого Марк изначально получил биткойны, которые хочет отправить Джессике.
Количество: Это конкретное количество BTC, которое Марк хочет отправить Джессике.
Вывод: Это открытый ключ Джессики, также известный как ее биткойн-адрес.
Как работает биткойн-транзакция?
Отправка BTC требует доступа к открытым и закрытым ключам, связанным с требуемым количеством биткойнов. Когда мы говорим, что у кого-то есть биткойны, на самом деле мы имеем в виду, что этот человек обладает доступом к паре ключей, состоящей из:
- открытого ключа, на который ранее было выслано некоторое количество биткойнов
- соответствующего ему уникального закрытого ключа, который авторизует отправку куда-то еще BTC, ранее отправленных на вышеупомянутый открытый ключ
Открытые ключи, также называемые биткойн-адресами, представляют собой случайную последовательность букв и цифр, которая работает так же, как адрес электронной почты или имя пользователя в социальной сети. Они публичные, так что вы можете без опасений делиться ими с другими. На самом деле вы должны давать свой адрес Bitcoin другим, когда хотите, чтобы они прислали вам BTC. Закрытый ключ — это еще одна последовательность букв и цифр. Однако закрытые ключи, как и пароли к электронной почте или другим аккаунтам, должны храниться в секрете.
Никогда не делитесь своим закрытым ключом с кем-либо, если вы на 100% не уверены, что этот человек никогда не украдет ваши средства. Также не забудьте сделать резервную копию закрытых ключей, записав их ручкой на бумаге, и храните их в безопасном месте. Ваш адрес Bitcoin по сути является прозрачным сейфом. Другие могут видеть, что внутри, но только те, у кого есть закрытый ключ, могут разблокировать сейф и получить доступ к средствам внутри. В нашем примере транзакции выше Марк хочет отправить BTC Джессике. Для этого он использует свой закрытый ключ, чтобы подписать сообщение с деталями транзакции. Затем в блокчейн отправляется это сообщение, содержащее:
- ввод: исходная операция с монетами, ранее отправленными по адресу Марка
- сумма: количество BTC, которое нужно отправить от Марка Джессике
- вывод: Публичный адрес Джессики.
Затем эта транзакция транслируется в сеть Bitcoin, где майнеры подтверждают, что ключи Марка имеют доступ к источникам (т. е. к адресам, с которых он ранее получал BTC), которые, по его словам, он контролирует. Этот процесс подтверждения известен как майнинг, потому что он требует ресурсоемкого вычислительного труда и вознаграждения майнеров в BTC за каждый разрешенный блок. Это также процесс, посредством которого «создаются» новые биткойны.
Почему подтверждения некоторых биткойн-транзакций занимают так много времени?
Все транзакции Bitcoin должны быть проверены майнерами блокчейна. Обратите внимание, что майнеры не занимаются отдельными транзакциями. Они майнят блоки, которые являются группами транзакций. Иногда ваша транзакция не попадает в текущий блок и встает в очередь до тех пор, пока не будет собран следующий блок. Протокол Bitcoin динамически регулирует требования, чтобы каждый блок занимал примерно 10 минут. Другая причина для длинного периода подтверждения заключается в том, что размер блока ограничен 1 Мбайтом текущим протоколом Bitcoin . Этот произвольный лимит может быть увеличен, но на данный момент он ограничивает количество транзакций, которые могут войти в блок, что по сути замедляет время подтверждения и, как следствие, всю сеть Bitcoin.
Подробнее о входах и выходах биткойн-транзакций
Хотя с монетами можно было бы обращаться по отдельности, было бы крайне неудобно совершать отдельную операцию на каждый цент при переводе. Чтобы значение можно было разделять и объединять, транзакции содержат несколько входов и выходов. Как правило, существует либо один вход от более крупной предыдущей операции, либо несколько входов, объединяющих меньшие суммы, и максимум два выхода: один для оплаты и один для возврата отправителю сдачи, если таковая имеется.
Помните, что биткоины «существуют» только в виде записей транзакций в блокчейне? Это означает, что иногда несколько транзакций заканчиваются прикреплением к определённому адресу Bitcoin. Допустим, у вас в кошельке 2 BTC. Эти 2 BTC пришли от четырех разных друзей, каждый из которых прислал вам 0,5 BTC на ваш день рождения. Для удобства интерфейс вашего кошелька будет отображать ваши сбережения как «2 BTC». Но внутри вашего кошелька эти доходы по 0,5 BTC не «складываются» в 2 BTC. Скорее ваш кошелек просто отслеживает четыре транзакции по 0,5 BTC по отдельности, и в сумме они составляют 2 BTC. Когда вы хотите купить что-то за BTC, ваш кошелек использует записи транзакций различных сумм, которые в сумме составляют сумму биткойнов, которую вы хотите потратить. Предположим, это число составляет 0,25 BTC, и вы хотите использовать эту сумму для покупки одежды у продавца. Основываясь на информации о ваших сбережениях выше, мы знаем, что у вас нет ни одной транзакции ровно на 0,25 BTC. Пользователи Bitcoin не могут разбить транзакцию на меньшие суммы, и потратить можно только всю транзакцию целиком. Поэтому когда вы открываете свой кошелек и набираете «.25» в поле количество, технически происходит так: одна из транзакций на 0,5 BTC (от вашего щедрого друга Криса) будет отправлена целиком. Затем разница вернется вам через новую транзакцию. Вот технический процесс по шагам:
- Количество, которое вы должны за вашу одежду, составляет 0,25 BTC
- Вы «отправляете» в магазин ввод на 0,5 BTC. (Помните, что вводы должны быть потрачены целиком).
- Биткойн-адрес магазина одежды — это вывод
Но фактически ваш кошелек создает для этой транзакции два вывода:
- 0,25 BTC продавцу одежды
- 0,25 BTC на новый адрес, созданный вашим кошельком, чтобы получить от продавца «сдачу».
Это может звучать сложно, но хорошая новость заключается в том, что для отправки или получения биткойнов знать это не обязательно.
Каковы комиссионные сборы за биткойн-транзакции?
Комиссионные сборы в Bitcoin учитывают различные факторы. Многие кошельки позволяют пользователям вручную устанавливать комиссию за транзакции. Любая часть транзакции, которая не предназначена получателю или возвращается как «сдача», включается в расчет комиссии. Комиссии идут майнерам. Их можно использовать для увеличения скорости подтверждения, мотивируя майнеров считать ваши транзакции приоритетными. Bitcoin сборы за больште переводы иногда могут достигать значительных сумм. Bitcoin Cash, напротив, обладает копеечным транзакционным сбором, а его платежи могут быть верифицированы даже с нулем подтверждений.
Начните покупать на сумму от 30 долларов!
Выберите из Bitcoin, Bitcoin Cash, Ethereum и других криптовалют
Источник
Биткоин транзакции. Ответы на популярные вопросы
Большинство криптоэнтузиастов сталкивались с проблемой когда их транзакция зависала в блокчейне, либо попросту не отправлялась. Мы собрали популярные вопросы и ответы на них касательно криптовалютных транзакций.
Получите скидку на торговую комиссию в 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. Участник конференций посвященных финтеху и криптовалютам в частности. Магистр в области информационной безопасности.
Источник