Платежные пулы – технология Taproot

Платежные пулы – технология Taproot открывает возможность создания нового второго слоя биткоина

04.11.2020 Andrew Asmakov

В октябре разработчики внедрили в исходный код клиента Bitcoin Core предложение, включающее в себя подписи Шнорра и технологии Taproot и Tapscript. Сроки его активации остаются открытыми, однако решение, которое многими ожидается с большим нетерпением, открывает потенциал к созданию новых, зачастую весьма любопытных сценариев.

Taproot – это вторая часть предложения. Если схема Шнорра предлагает новый тип подписи, то Taproot расширяет их функциональность – благодаря комбинации криптографических уловок пользователи получают возможность скрывать за внешне обычными биткоин-транзакциями подробности своей финансовой активности.

Taproot близко, или Следующая ступень эволюции биткоина

Более того, технология Taproot уже стала источником вдохновения для новых идей и разработок, которые в будущем могут стать еще одной частью биткоина. О том, какая в этом направлении ведется работа, в частности по созданию нового второго слоя по аналогии с Lightning Network, рассказываем в адаптированном переводе статьи Аарона ван Вирдума из Bitcoin Magazine.

Опираясь на базовую идею Taproot, Джереми Рубин, Антуан Риард, Глеб НауменкоГрегори Максвелл и другие разработчики Bitcoin Core начали обсуждение концепции платежных пулов. Такие пулы (JoinPool, CoinPool) могли бы позволить группе пользователей выступать в качестве совместных владельцев одних и тех же монет (выходов транзакций) и осуществлять между собой платежи.

Так как сама группа и ее отдельные участники скрыты в структуре Taproot, достигается более высокий уровень приватности и гибкости смарт-контрактов, также появляются и другие преимущества. В их числе – потенциальная возможность отправления и получения транзакций офчейн, то есть без записи данных в блокчейн. Это превращает платежные пулы в новый второй слой биткоина.

Особенности дизайна платежных пулов отличаются в зависимости от предложений, но всех их объединяет общая идея.

Совместное владение монетами

Для создания платежного пула пользователи объединяют свои монеты на Taproot-адресе. Например, у Алисы есть три монеты, у Боба – две, у Кэрол – одна. В общей сложности у них шесть монет. Вместе они создают транзакцию, отправляя эти монеты на известный им общий адрес и создавая платежный пул с этими шестью монетами.

В блокчейне платежный пул отображается как обычный биткоин-адрес, на котором находятся шесть монет. Но это только на поверхности, а в действительности Алиса, Боб и Кэрол использовали технологию Taproot, которая обеспечивает каждому из них владение соответствующей долей монет. В любой момент все участники платежного пула могут отозвать принадлежащие им монеты.

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

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

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

Это можно сделать несколькими способами, зависящими от дизайна платежного пула, каждый из которых имеет свои недостатки с точки зрения сложности и масштабируемости. Самый простой способ – отправить каждому участнику его долю монет. Иными словами, если Алиса выходит из платежного пула, Боб и Кэрол также его покидают.

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

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

Непростой кейс софтфорка: как будет активировано следующее обновление биткоина

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

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

Сценарии платежей

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

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

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

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

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

Еще одна опция дает участникам платежного пула возможность платить друг другу. Например, если Алиса хочет заплатить одну монету Бобу, участники пула отправляют средства в новый платежный пул, в котором из баланса Алисы одна монета вычитается, а баланс Боба на одну монету увеличивается. Запись в блокчейне по-прежнему выглядит как обычная биткоин-транзакция, и что за ней в действительности скрывается, сказать невозможно.

Более того, дополнительные апгрейды исходного кода биткоина, например, активация протокола Noinput [предложенный разработчиком Blockstream Кристианом Деккером софтфорк для Lightning Network – ForkLog], дают возможность осуществлять транзакции офчейн.

Такие типы платежных пулов в потенциале могут быть использованы для поддержки самого протокола Lightning Network или других протоколов второго уровня, скрывая всю сложность задействованного механизма за завесой обычной для постороннего наблюдателя биткоин-транзакции.