research
Повышение конфиденциальности при помощи Pay-to-EndPoint (P2EP)
August 08, 2018
|

Для того, чтобы актив использовался в качестве средства расчета он должен быть конвертируемым. Это значит, что его составляющие должны быть взаимозаменяемыми, при чем каждая единица должна иметь одинаковую ценность. Анализ блокчейна Bitcoin допускает возможность того, что из-за истории транзакций, компания может объявить некоторые биткоины «запачканными» и неприемлемыми в качестве средства оплаты. Компании, проводящие анализ блокчейна, которые стараются следить за источником и владельцами биткоина, понижают конфиденциальность и мешают свободному и беспристрастному обмену биткоинами. Если не обеспечивать конфиденциальность базовых транзакций, биткоин частично теряет конвертируемость.

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

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

Сломать инструменты анализа блокчейна

В статье о блокчейне, опубликованной в 2013 году, Meiklejohn et al обрисовали ключевой эвристический алгоритм, использующийся для отслеживания связей между адресами в блокчейне Bitcoin. Они сделали следующее наблюдение: в рамках основополагающего подхода к анализу блокчейна считается, что «разные открытые ключи, использующиеся в качестве входов транзакции, контролируются одним и тем же пользователем».

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

Важно отметить, что для того, чтобы сделать недействительным предположение относительно «одного владельца входов» (‘common input ownership”), не обязательно, чтобы все транзакции участвовали в каком-то одном предлагаемом решении. Простое обеспечение наличия достаточного количества транзакций с одинаковыми входами от разных владельцев автоматически делает это предположение недействительным. Так как это предположение – элементарное звено анализа блокчейна, было бы оправданным пойти дальше и предположить, что предпосылки для проведения анализа Bitcoin в целом могут стать недействительными, если подобное решение получит достаточно большое распространение.

Этот подход помог более четко определить цели группы:

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

Определение основополагающих требований

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

Предложение ‘Pay to EndPoint’ (P2EP)

В результате рассмотрения различных идей было выработано предложение ‘Pay to EndPoint’ (P2EP). Хотя у него тоже есть свои недостатки, по всей видимости оно соответствует обрисованным целям, а именно: определение эвристического алгоритма «один владелец входов» как недействительного предположения и выполнение требований к одноранговому взаимодействию при обеспечении адекватного уровня сопротивления атакам.

Основная предпосылка P2EP состоит в следующем: как Отправитель, так и Получатель тратят входы на транзакцию через взаимодействие, которое координируется конечной точкой, обозначаемой Получателем при помощи URI, совместимого с BIP 21.

P2EP не требует изменений протокола Bitcoin и создаваемые им транзакции нелегко идентифицировать, так как у них такие же «отпечатки пальцев», как у обычных транзакций.

Возможно, это легче всего объяснить, изучив шаги, предпринимаемые при выполнении транзакции при помощи P2EP:

Шаг 1

Получатель (продавец ли конечный пользователь) генерирует URI, в формате BIP 21 с дополнительным параметром, которым указывается конечная точка P2EP. Так как BIP 21 позволяет использовать переменные, которые пока остаются непонятыми, существующие версии кошельков не ломаются. Адрес конечной точки не должен обязательно быть адресом в зоне .onion, он просто должен иметь URI любой совместимой конечной точки.

Пример URI (адаптирован из примеров в BIP 21):

bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?p2ep=3j4tau93wkc8mh32.onion

Шаг 2

Отправитель инициирует взаимодействие с Получателем, подтвердив, что предоставленная конечная точка свободна. Если нет, транзакция передается обычным способом, средства переводятся на обычный Bitcoin-адрес BIP 21 Получателя. Если конечная точка Получателя свободна, Отправитель предоставляет подписанную транзакцию Получателю в качестве доказательства владения UTXO.

Шаг 3

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

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

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

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

Следует отметить, что есть основания использовать Bulletproofs взамен вышеописанных методов обмена UTXO.

Шаг 4

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

В случае сбоев при применении процесса P2EP по какой-либо причине, транзакция передается как обычная.

Изучим пример транзакции P2EP

Если Алиса хочет заплатить Бобу 1 BTC:

Эта транзакция ломает эвристический алгоритм «один владелец входов» и может быть истолкована множеством разных способов. Она может, например, быть истолкована так, что Алиса заплатила Бобу 6 BTC, потратив всего 8 BTC при помощи двух входов - 3 BTC и 5 BTC, и получив 2 BTC в качестве сдачи.

Преимущества и недостатки P2EP

Преимущества:

Недостатки:

Что предстоит Pay to EndPoint в будущем?

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

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