Рекордный уровень транзакций, обработанных в сети биткоина за один день, составил 490 тысяч переводов. При этом стоимость в долларах оценивается миллиардами.
Средняя комиссия сети в первый пик, который состоялся в мае 2017 года, вырос до доллара. И их стоимость продолжает подниматься: к началу июня средние сборы пробили уровень в 5,5 долларов. Это уже было шоком, потому что за три года до этого комиссия не поднималась выше 31 цента. В этот момент появилось решение, которое смогло сократить количество транзакций.
В самые загруженные для сети дни, пользователи обнаруживают, что комиссия будет больше, чем сумма перевода. И это фатально для принятия биткоина как платежной системы.
Таким образом, появляется батчинг.
Батчинг — это объединение многих выходов в одну транзакцию.
Дэвид А. Хардинг, автор биткоин-документации, опубликовал сообщение в блоге: экономии средств на батчинге достигает 80%.
Идея была простой — для входов, отправляющих сразу несколько транзакций, выходы кластеризуются в одну транзакцию. Это становится более экономичным. Дэвид обнаружил, что если комбинировать 10 транзакций в одну, а не отправлять их по отдельности, сохраняется 75% площади блока.
По сути, пакетная обработка, батчинг — это один из способов собрать как можно больше транзакций в ограниченное пространство блоков, доступное на блокчейне биткоина.
Когда начала расти популярность криптовалют в середине 2017 года, пользователи начали более тщательно изучать, насколько эффективно они используют пространство блоков. В целом, 2 Мб места использовалось неэффективно. Началась неформальная кампания: объединять переводы и экономить пространство. Некоторые биржи проводили такую политику в течение многих лет, другие внедрили ее. Вопрос был исчерпан из-за того, что цена BTC упала в первом квартале 2018 года, а транзакционная нагрузка и, следовательно, средняя комиссия, снизилась.
Сейчас пакетные платежи все еще используются, несмотря на низкое количество транзакций.
Где искать статистику
Есть некоторые сайты, например, transactionfee.info и outputs.today.
Они отслеживают именно выходы, которые являются лучшим показателем общей экономической активности на блокчейне, чем транзакции за день. Поскольку одна транзакция может включать в себя несколько выходов, количество итоговых выходов более важно. Крупные участники сети используют пакетную обработку для уменьшения общей суммы транзакций.
Матчасть
Биткоин использует модель UTXO, которая означает Unspent Transaction Output — выходы неизрасходованных транзакции. Для сравнения, Ripple и Ethereum используют модель «счет/баланс». В сети BTC пользователь не имеет баланса, а только UTXO, которыми управляет.
Если кто-то хочет перевести деньги кому-то другому, кошелек выбирает один или несколько выходов. То есть, набирается сумма, которую нужно отправить. Затем эта сумма переходит к получателю — это выход (для кошелька-отправителя), а разница возвращается к отправителю, что называется выходом изменения. Каждый выход может иметь практически неограниченное количество значений в виде сатоши.
Гид по долям биткоина
Чтобы лучше понять, представьте бумажник с разными купюрами. Вам выставили счет за кофе в 250 рублей, вы подаете 300 и ожидаете сдачу. Ситуация в бумажнике меняется? Вы не отрезаете от сотни половину, а получаете возврат переплаты.
Также нужно помнить, что нет жесткого ограничения на количество транзакций, которые могут вписываться в блок. Есть ограничение на размер в мегабайтах (пока 2 Мб). Большие транзакции (в размере, а не сумме перевода) будут платить более высокие комиссии, чтобы попасть в блок. Кроме того, каждая транзакция может иметь практически неограниченное количество входов или выходов.
Каждая транзакция имеет хотя бы один вход и выход, но по факту больше. Большая часть этого пространства занята вводом (часто 60% и более из-за подписи, которая доказывает, что BTC принадлежат отправителю), в то время как выходные данные составляют 15-30%. Чтобы сохранить вес транзакции есть два основных варианта:
- использовать меньше входов. Чтобы минимизировать затраты, вы можете периодически переотправлять весь свой баланс себе, если он состоит из множества мелких частей. Когда сборы очень низкие, получится дешево, а затем транзакция будет меньше весить. Это называется консолидация UTXO.
- Пользователи, которые часто делают переводы (особенно в одном блоке), могут включать почти неограниченное количество выходов для разных людей в одной транзакции.
Это преимущество BTC как платежной системы. Транзакция может объединить тысячи отдельных переводов.
Пакетная транзакция в самом общем варианте определяется как «транзакция с тремя и более выходами». Как правило, батчинг осуществляется в основном пулами или биржами, которым важная такая эффективность. Редко, чтобы обычный пользователь занимался созданием пакетных транзакций, тем более, в кошельках часто нет такого интерфейса, а в повседневной жизни это нужно редко.
И несмотря на то, что в обычной рутине это не пригодится, важно понимать эту особенность сети. Это позволяет справедливее оценить, насколько используется сеть.
Это как подсчитать пассажиропоток: мы считаем вместимость автобуса, чтобы понять, сколько людей ездит по маршруту, а не количество транспортных средств.
Как Segwit, так и пакетные операции созданы для сжатия транзакций, чтобы поместить их в доступное пространство блока. Их используют Binance, Bitfinex и Shapeshift.
Есть заблуждение, что количество транзакций упало из-за батчинга, но это не так. Он пока занимает не такую большую долю, хотя есть восходящий тренд. Но при этом в них передается до 70% всех BTC.
Количество платежей упало примерно настолько же, насколько и количество транзакций.
Тем не менее, все это говорит, что биткоин может масштабироваться собственными средствами: осилить дополнительную нагрузку до определенного момента.
Как совершать батчинг-транзакции
В полной ноде Bitcoin Core или других узлах с аналогичным API вместо sendtoaddress, например:
sendtoaddress 1FjdYJTkdmA2KYvGqRX3G3WJeTFABgUJsJ 1.23
sendtoaddress 194hTHKyJchh6dV8a5Ce5Jd1ENEaxMyKUK 4.56
выполняется:
sendmany ‘’ ‘{“1FjdYJTkdmA2KYvGqRX3G3WJeTFABgUJsJ”: 1.23, “194hTHKyJchh6dV8a5Ce5Jd1ENEaxMyKUK”: 4.56}’