2 октября в блоге Coinbase её сотрудники Брок Миллер и Эли Хеймз представили подробное описание новой техники, используемой биржей для упрощения обработки транзакций в блокчейне биткоина. В компании решение прозвали «Ребёнок платит за родителя» (CPFP).
Вот как излагается основная проблема, которую пытается решить Coinbase:
Комиссии за транзакции волатильны и непредсказуемы, что приводит к значительным колебаниям в количестве времени, которое требуется для подтверждения транзакции. Например, в декабре 2017 года некоторые транзакции пользователей «застревали» из-за роста комиссий и общей перегрузки сети биткоина. Это прежде всего разочаровывает наших пользователей, потому что для их транзакций требуется больше времени, чем они ожидают. Возникает много обращений к техническим специалистам Coinbase с требованием расследования ситуации, которая не находится под их контролем.
Для полной ясности Миллер и Хеймз описывают, как происходит традиционная транзакция:
Когда клиент хочет отправить некоторое количество биткоинов на другой адрес в сети, есть два основных фактора, которые мы как биржа пытаемся сбалансировать: 1. комиссия за транзакцию (то, сколько клиент платит за свою транзакцию, которая должна быть включена в блок), 2. скорость включения этой транзакции.
Если сборы по кредитным картам рассчитываются в процентах, то биткоин представляет собой «рынок комиссий». Это означает, что комиссии зависят от перегруженности сети, и блокчейн позволяет пользователям выбирать, сколько они предпочли бы заплатить. При этом майнеры, для которых комиссия — это стимул, склонны выбирать для обработки транзакции с самыми высокими заявленными сборами.
Таким образом, если кто-то совершает транзакцию, когда сеть работает в спокойном режиме, он платит небольшую комиссию. Однако, если загрузка сети внезапно возрастает и кто-то другой пытается совершить транзакцию, комиссия для последнего будет намного выше. Майнеры в первую очередь проводят проверку последней транзакции, а предыдущей приходится ждать, пока сеть не замедлит работу, в результате перевод «застревает».
Решение CPFP — «ребёнок платит за родителя»
На помощь приходит решение CPFP, стимулирующее майнеров к подтверждению транзакций с более низкой оплатой.
Чтобы понять, как это работает, нужно взглянуть на биткоин через призму фиатной валюты. Если вы купили что-то, вы должны «ввести» наличные средства в сеть продавца. Когда он в свою очередь использует эти средства для покупки чего-либо, он «выведет» их в другую сеть. Его покупка считается «ребёнком» вашей, «родительской» покупки, так как она может существовать только благодаря вашему финансированию.
Представьте тот же процесс с небольшими изменениями. Если вы заплатите $10 за пятидолларовую покупку, то полученная сдача («выход сдачи») будет расходоваться из сети продавца. Этот «выход сдачи» — «ребёнок» транзакции, где сети продавца и покупателя рассматриваются как «родители». У каждой биткоин-транзакции есть «выход сдачи», что и позволяет реализовать решение CPFP.
Такие «дочерние» транзакции не могут быть добавлены в блок до тех пор, пока туда не попадут «родительские». При CPFP блокчейн биткоина рассматривает «родительские» и «дочерние» транзакции как группу. Если обе стороны ждут подтверждения, сеть добавляет их транзакционные комиссии вместе. Майнеры действительно получают больше за подтверждение такой группы, но в тоже время транзакции не могут быть проверены и не проверяются по-отдельности. То есть для получения высокой комиссии от «дочерней» транзакции майнер должен иметь дело с обоими «родителями». В итоге выигрывают все.
В течение последних нескольких месяцев Coinbase объясняла трейдерам принцип CPFP следующим образом:
Если транзакция клиента застревает в течение как минимум четырёх блоков, мы транслируем и оплачиваем достаточную комиссию за «дочернюю» транзакцию, чтобы спасти «родительскую». Фактически мы группируем их в партию для того, чтобы спасти несколько «родителей» при помощи одного «ребёнка». Это делается без какого-либо согласования с конечным пользователем, и до сих пор мы получали положительные результаты.
Такое решение Coinbase испытано на тысячах транзакций, которые в итоге оказались быстрее традиционных.