Найти тему
CryptoFox

Что такое батчинг биткоина и как он позволяет экономить?

Оглавление

Рекордный уровень транзакций, обработанных в сети биткоина за один день, составил 490 тысяч переводов. При этом стоимость в долларах оценивается миллиардами.

Средняя комиссия сети в первый пик, который состоялся в мае 2017 года, вырос до доллара. И их стоимость продолжает подниматься: к началу июня средние сборы пробили уровень в 5,5 долларов. Это уже было шоком, потому что за три года до этого комиссия не поднималась выше 31 цента. В этот момент появилось решение, которое смогло сократить количество транзакций.

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

Таким образом, появляется батчинг.

Батчинг — это объединение многих выходов в одну транзакцию.
-2

Дэвид А. Хардинг, автор биткоин-документации, опубликовал сообщение в блоге: экономии средств на батчинге достигает 80%.

Идея была простой — для входов, отправляющих сразу несколько транзакций, выходы кластеризуются в одну транзакцию. Это становится более экономичным. Дэвид обнаружил, что если комбинировать 10 транзакций в одну, а не отправлять их по отдельности, сохраняется 75% площади блока.

По сути, пакетная обработка, батчинг — это один из способов собрать как можно больше транзакций в ограниченное пространство блоков, доступное на блокчейне биткоина.

Когда начала расти популярность криптовалют в середине 2017 года, пользователи начали более тщательно изучать, насколько эффективно они используют пространство блоков. В целом, 2 Мб места использовалось неэффективно. Началась неформальная кампания: объединять переводы и экономить пространство. Некоторые биржи проводили такую политику в течение многих лет, другие внедрили ее. Вопрос был исчерпан из-за того, что цена BTC упала в первом квартале 2018 года, а транзакционная нагрузка и, следовательно, средняя комиссия, снизилась.

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

Где искать статистику

Есть некоторые сайты, например, transactionfee.info и outputs.today.

-3

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

Матчасть

Биткоин использует модель UTXO, которая означает Unspent Transaction Output — выходы неизрасходованных транзакции. Для сравнения, Ripple и Ethereum используют модель «счет/баланс». В сети BTC пользователь не имеет баланса, а только UTXO, которыми управляет.

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

Гид по долям биткоина

Чтобы лучше понять, представьте бумажник с разными купюрами. Вам выставили счет за кофе в 250 рублей, вы подаете 300 и ожидаете сдачу. Ситуация в бумажнике меняется? Вы не отрезаете от сотни половину, а получаете возврат переплаты.

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

Каждая транзакция имеет хотя бы один вход и выход, но по факту больше. Большая часть этого пространства занята вводом (часто 60% и более из-за подписи, которая доказывает, что BTC принадлежат отправителю), в то время как выходные данные составляют 15-30%. Чтобы сохранить вес транзакции есть два основных варианта:

  • использовать меньше входов. Чтобы минимизировать затраты, вы можете периодически переотправлять весь свой баланс себе, если он состоит из множества мелких частей. Когда сборы очень низкие, получится дешево, а затем транзакция будет меньше весить. Это называется консолидация UTXO.
  • Пользователи, которые часто делают переводы (особенно в одном блоке), могут включать почти неограниченное количество выходов для разных людей в одной транзакции.

Это преимущество BTC как платежной системы. Транзакция может объединить тысячи отдельных переводов.

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

И несмотря на то, что в обычной рутине это не пригодится, важно понимать эту особенность сети. Это позволяет справедливее оценить, насколько используется сеть.

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

Как Segwit, так и пакетные операции созданы для сжатия транзакций, чтобы поместить их в доступное пространство блока. Их используют Binance, Bitfinex и Shapeshift.

Есть заблуждение, что количество транзакций упало из-за батчинга, но это не так. Он пока занимает не такую большую долю, хотя есть восходящий тренд.  Но при этом в них передается до 70% всех BTC.

-4

Количество платежей упало примерно настолько же, насколько и количество транзакций.

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

Как совершать батчинг-транзакции

В полной ноде Bitcoin Core или других узлах с аналогичным API вместо sendtoaddress, например:

sendtoaddress 1FjdYJTkdmA2KYvGqRX3G3WJeTFABgUJsJ 1.23
sendtoaddress 194hTHKyJchh6dV8a5Ce5Jd1ENEaxMyKUK 4.56

выполняется:

sendmany ‘’ ‘{“1FjdYJTkdmA2KYvGqRX3G3WJeTFABgUJsJ”: 1.23, “194hTHKyJchh6dV8a5Ce5Jd1ENEaxMyKUK”: 4.56}’

Собственно,  в обычной жизни это можно использовать так: просто «накопить момент»,  когда нужно сделать сразу несколько переводов. Отложить несколько  покупок, броню билетов и т.д. на один день.Это делается через кнопку Add Recipient.
Собственно, в обычной жизни это можно использовать так: просто «накопить момент», когда нужно сделать сразу несколько переводов. Отложить несколько покупок, броню билетов и т.д. на один день.Это делается через кнопку Add Recipient.