Multisig-транзакции или новые возможности для интернет-торговли

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

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

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

1-из-M

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

M-из-M

В данном случае каково число M совершенно неважно. Все M сторон создают кошелек, транзакции с которого могут подтвердить только одновременно все. До тех пор, пока это не произошло — деньги будут заморожены на счету навечно. Если не фантазировать на тему грабителей банков, которым для того, чтобы воспользоваться украденными деньгами непременно нужно сойтись всем вместе, данная схема может применяться для обеспечения дополнительной безопасности кошельков: например, можно раскидать части доступа к “многоподписному” кошельку по нескольким носителям. В схеме 2-из-2, если один из ваших компьютеров на базе Windows взломали хакеры, то чтобы “увести” деньги, придется дополнительно взломать еще и ваш второй компьютер с Linux.

N-из-M

Эта схема, а вернее ее вариант 2-из-3, как раз и есть цель нашего рассказа. Именно при помощи нее возможно обезопасить торговлю в сети Интернет без необходимости существования доверия между продавцом и покупателем. Впрочем, какая-то степень доверия все-таки должна существовать, но не друг к другу, а к третьей стороне, назовем ее “арбитром” (эскроу, escrow).

  1. Арбитр выбирается продавцом и покупателем заранее по договоренности, ему высылаются все необходимые юридические документы и договоренности за подписями сторон.
  2. Кто-то из троих, скорее всего сам арбитр, создает 2-из-3 multisig-адрес (счет сделки) используя публичные адреса всех трех сторон: <продавец> <покупатель> <арбитр>. Полученный таким образом адрес сообщается всем остальным.
  3. Покупатель перечисляет деньги на этот кошелек, в чем у оставшихся сторон есть возможность удостовериться через blockchain.info
  4. Продавец, увидя деньги на счету, посылает товар покупателю. Когда товар приходит и покупатель остается доволен, он сообщает об этом арбитру и тот подписывает транзакцию по переводу денег на счет продавца. Продавцу остается подписать ту же самую транзакцию уже своим ключом и тогда сеть будет считать ее завершенной, а деньги “упадут” на счет.
  5. В случае, если покупатель не доволен товаром и хочет оспорить сделку, он посылает все необходимые доказательства, опять же, арбитру, и тот решает чью сторону принять. Если он соглашается с покупателем, то точно так же, подписывает транзакцию по переводу денег со счета сделки обратно на счет покупателя.

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

Для простых смертных

Одним из первых сервисов, позволяющих автоматизировать весь описанный выше процесс, стал Bitrated.

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

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

У желающих есть возможность посмотреть презентацию об этой возможности от одного из разработчиков Биткоин Майка Херна.

 

По теме

  • Pingback: Blockchain University | CriptoMoney()

  • Сергей

    А хоть кто то напишет это шаг за шагом?

    • Сергей

      Как подписать эти транзакции? Вот есть у меня два приватных адреса… Как получить и куда крипту?