В феврале 2022 года Глеб Науменко (получатель гранта BitMEX) и Антуан Риар опубликовали whitepaper проекта CoinPool. Предыдущая версия проекта получила общее освещение в журнале Bitcoin Magazine. В этом материале мы попытаемся интуитивно сформировать представление о предложении CoinPool, ответив на распространенные вопросы пользователей. Эта статья рассчитана на читателей с некоторой технической подготовкой (тех, кто знает, что такое платежный канал), которым не хватает времени или опыта для чтения полной статьи. Надеемся, что этот материал найдет отклик у читателей. Отзывы можно присылать в виде ответа на сообщения в публикации со списком рассылки или напрямую Глебу по адресу gleb@thelab31.xyz.
Что такое CoinPool?
Это протокол на базе биткоина: многие пользователи биткоина блокируют свои средства в одном UTXO, проводят транзакции внутри этого UTXO вне блокчейна и могут в любой момент разблокировать/вывести свои средства из пула.
Экземпляр CoinPool можно рассматривать как многосторонний платежный канал с аплифтингом, о чем мы расскажем ниже.
Какую пользу биткоину принесет CoinPool?
CoinPool позволяет совершать больше платежей с ВТС с меньшими затратами, мгновенным подтверждением и альтернативным подходом к обеспечению конфиденциальности.
Те, кто не используют CoinPool, получают больше блочного пространства благодаря экономии, достигнутой CoinPool, что позволяет им осуществлять транзакции с более низкой комиссией.
Чем CoinPool отличается от Lightning?
CoinPool более эффективно использует блочное пространство, так как пользователи могут сделать больше платежей, прежде чем им придется закрыть платежный канал с помощью транзакции в блокчейне. Это достигается за счет того, что средства не переводятся через сеть (Lightning) Network, что обеспечивает более высокую ликвидность.
Главный недостаток CoinPool в том, что каждое действие (кроме вывода) требует сотрудничества всех пользователей пула. Мы планируем решить эту проблему с помощью дальнейших исследований. В некоторых случаях эта проблема уже решена с помощью аплифтинга.
Что такое аплифтинг в CoinPool?
Счета CoinPool — это не только простые балансы, но и протоколы биткоина. Процесс переноса экземпляра протокола на счет CoinPool называется аплифтингом.
Например, это может быть двухпользовательский платежный канал, подключенный к Lightning Network. В этом случае платежи между двумя пользователями и от них к сети LN не требуют сотрудничества с другими участниками.
По модели угроз экземпляры протокола с аплифтингом очень похожи на версии без аплифтинга.
Чем CoinPool отличается от Channel Factories?
В CoinPool и Channel Factories оптимизация LN выполняется схожим образом, в них блочное пространство используется более эффективно.
Когда из Channel Factory уходит один пользователь, все остальные должны за ним последовать, что значительно ограничивает потенциальную экономию. В CoinPool этого не происходит.
Чем CoinPool отличается от JoinPool?
JoinPool — это предшественник CoinPool с более высокими затратами на связь/хранение, в котором не поддерживаются платежи вне блокчейна и аплифтинг.
Главное назначение JoinPool — не масштабируемость, а анонимность, которая достигается за счет смешивания монет.
Можно ли использовать CoinPool уже сегодня?
Нет. Для работы самой простой версии CoinPool нужен SIGHASH_ANYPREVOUT, который, как ожидают многие, станет следующим софтфорком биткоина. Но на практике даже этого будет недостаточно: решение масштабируется только на 20 пользователей и рассчитано на балансы с равнозначными суммами.
Что нужно сделать для практической реализации CoinPool?
Существуют различные способы реализации CoinPool. Помимо SIGHASH_ANYPREVOUT, для работы нашей версии CoinPool нужны SIGHASH_GROUP и OP_MERKLESUB. Первый сейчас обсуждается в сообществе Lightning как вариант решения проблем протокола, а второй — это новый опкод, предложенный нашей командой.
Что такое OP_MERKLESUB?
Это новый опкод, который позволяет использовать ковенанты (правила, ограничивающие трату определенных монет). При использовании этого опкода выход будет равным выходу Taproot, который тратится, но ключ подписи при этом удаляется из дерева Taproot и внутреннего открытого ключа (pubkey) Taproot.
В CoinPool этот опкод позволяет осуществлять некооперативный (без сотрудничества участников) вывод, не влияя на состояние оставшегося пула.
Можно ли OP_MERKLESUB использовать для чего-то еще, кроме CoinPool?
Удаление дерева Меркла может быть полезно и для других смарт-контрактов, но мы оставляем это направление для будущих исследований. Особенность OP_MERKLESUB в том, что вместе с путем к скрипту он также принудительно модифицирует путь к ключу.
Что еще можно использовать для создания CoinPool?
OP_CTV позволяет создавать платежные пулы с различными компромиссами, что лично нам кажется менее интересным, чем разработка OP_MERKLESUB. Возможно, добавление к OP_CTV более универсальных опкодов позволит создать нечто очень похожее на CoinPool. OP_TLUV можно рассматривать как расширенную версию OP_MERKLESUB, но для создания протокола, подобного CoinPool, нужно уделить больше внимания работе по проектированию протокола.
Каковы следующие шаги в разработке CoinPool?
Одно из направлений дальнейшей деятельности — устранение главного ограничения CoinPool, требования высокой интерактивности. Мы уже видим кое-какие решения, основанные на теории игр и предположениях о минимальном доверии, но ищем что-нибудь получше.
Сейчас, когда существует множество предложений, касающихся ковенантов и будущих софтфорков (OP_CTV, OP_TLUV, OP_EVICT), мы должны разработать систему для их сравнения, чтобы лучше понять необходимые компромиссы и в дальнейшем принимать более обоснованные решения, которые могут повлиять на экосистему.