Биткойн — это цифровая валюта и платежная система в одном флаконе. Но и это еще не все. Заложенные в протокол возможности позволяют гораздо больше, чем просто денежные переводы. Они позволяют исполнять довольно сложные контракты, полагаясь исключительно на средства протокола. В частности, совершать удаленные сделки без посредников, даже если вы совершенно не доверяете своему контрагенту. Как? Об этом-то мы сейчас и расскажем.
Обычно, мы имеем дело с теми, кто вложил что-то существенное в эти отношения. Ваши друзья доказали, что дорожат вашей дружбой, и потому у Вас есть основания им доверять. Ваш местная пекарня вложила деньги в организацию производства, наняла сотрудников и оплатила рекламу, они хотят вести бизнес и отбить свои вложения — так что вы можете доверить им свои деньги. Apple инвестировал миллиарды долларов в производство iPhone; таким образом, Вы посылаете им свои деньги через интернет-магазин, не волнуясь, что они могут взять их и убежать. Это также работает и в обратную сторону: если Вы успели заработать себе репутацию, Вы можете попросить заплатить вперед, и другие люди сделают это без опасений.
Однако в некоторых ситуациях это не работает. Иногда вы хотите купить что-то на Ebay у кого-то незнакомого. Вы друг друга знать не знаете, репутацией на Ebay вы не дорожите, однако вам хотелось бы, чтобы всё прошло гладко. Или вот другая ситуация, вы — фрилансер, делающий веб-сайт для какого-то мелкого бизнеса в другой стране. У вас вообще нет большой возможности влиять на репутацию друг друга. И если вдруг появятся разногласия, никто кроме вас двоих не может достоверно судить, кто прав, а кто нет.
Исторически это решалось двумя способами: или личной встречей в людном месте для непосредственного обмена, или при помощи третьего лица. Оба подхода имеют ограничения и не могут быть признаны полностью удовлетворительными.
Личный обмен не всегда физически возможен (различные виды услуг, и просто доставка товаров из-за океана), и к тому же иногда связан с вероятностью нарваться на банальный грабеж (например, на обратном пути к дому). Гарантия третьей стороны (эскроу) казалось бы, лучше, но на деле и это оказывается не совсем так. Так, для откровенных мошенников не составляет труда создавать все время новые аккаунты на eBay, и даже если их обман проходит всего в 5-10% случаев, они остаются в прибыли. Таким образом, пользователи всё равно не защищены от обмана, но вынуждены переплачивать за услуги гаранта.
Каким же образом мы могли бы решить эту проблему для двух незнакомцев?
Давайте подумаем. Мы эффективно ведем переговоры, пока находимся в равном положении. Например, прежде чем заключить договор, мы подробно обсуждаем нюансы сделки и всегда можем разойтись по хорошему, так как ничего не теряем, кроме времени, ушедшего на переговоры (вопрос времени актуален для обеих сторон, таким образом, у обоих есть стимул закончить их как можно скорее). Но всякий раз, когда кто-то получает аванс, это может стать стимулом сбежать, не выполняя своей части договора. Другой пример: если мы имеем дело с друзьями, с которыми уже установились долгосрочные отношения, то небольшие авансы обычно не проблема — они не станут достаточным основанием, чтобы разорвать отношения.
Что же отсюда следует? Сумма того, что мы можем потерять, должна быть значительно выше суммы сделки.
Очевидно, что если мы ничего не вложили в отношения (не внесли залог), то это надо будет сделать. Но мы не хотим, чтобы это было односторонняя жертва. Почему бы обоим участникам сделки не внести залог, который к ним вернётся только в случае успешного исполнения обязательств по договору обеими сторонами.
Вот тут-то на сцену и выходит Биткойн. Протокол позволяет не только надежно переводить друг другу деньги, но также позволяет подписывать сложные договоры, используя встроенный скриптовый язык и систему цифровой подписи.
Биткойн делает возможным следующую схему сделки:
- Каждая из сторон сделки независимо блокирует некоторую сумму своих денег в одной транзакции, не встречаясь лично и не привлекая третью сторону (гаранта).
- Эти деньги можно разблокировать только когда обе стороны согласны на это. Если по крайней мере одна сторона не хочет разблокировать депозит, другая сторона ничего не может с этим сделать.
- Обе стороны могут разблокировать только весь депозит. Никто не может разблокировать только свои деньги.
- Ни у кого больше нет доступа к депозитам, и ни одна из сторон не может получить доступ к деньгам другой стороны.
Цена вопроса? Обмен данными через Интернет, чтобы построить совместную транзакцию, 1-2 часа ожидания, пока оне не будет включена в блокчейн (не любой майнер включит нестандартную транзакцию в новый блок), и обычный взнос за транзакцию в несколько центов, независимо от рассматриваемой суммы.
Как это будет работать? У обеих сторон должно быть установлено приложение-кошелек, которое автоматизирует формирование подобных транзакции (это пока в работе). Пусть Алиса и Борис хотят провести сделку, скажем, на 1 BTC. Они договариваются о сумме, которая будет заблокирована (обычно 200-300% от стоимости сделки). Скажем, это будет сумма в 2 BTC. Алиса посылает Борису свой публичный ключ и хеш любого секретного числа. Борис строит транзакцию с этими данными и собственным публичныым ключом и хешем случайного числа. У операции есть два результата: один для Бориса с 2 BTC и другой для Алисы с 2 BTC. Борис подписывает свою часть операции с соответствующей суммой на входе и посылает его Алисе, чтобы подписать ее часть. Алиса проверяет, что Борис указал все суммы и точно включил ее открытый ключ и ее хэш случайного числа. Если операция правильна, Алиса добавляет свои 2 BTC на входе и подписывает его. Операция не будет действительна до тех пор, пока обе стороны не подпишут ее, и сумма входов не будет соответствовать сумме выходов (с учётом комиссии). После того как Алиса подписала финальную транзакцию, она посылает ее в сеть, и обе стороны ждут, пока она не будет включена в блокчейн.
Как только операция вошла в блокчейн, у Алисы и Бориса имеется по 2 BTC, замороженных на счету, в то время как стоимость их договора всего 1 BTC.
Теперь финансовые риски обеих сторон выше, чем их прибыль при сделке. Они инвестировали в успешное окончание сделки, которое удовлетворит обе стороны. Если Алиса посылает какой-то товар Борису до того как получила от него платеж, тот понимает, что она едва ли разблокирует залоговый депозит, пока платёж не будет осуществлён. Борис рискует большей залоговой суммой, чем тот один биткойн, который он может получит, обманув Алису. А значит, вероятнее всего он выполнит свои обязательства. Когда обе стороны будут полностью удовлетворены результатами сделки, они разблокируют свои залоговые деньги, и на этом сделка будет завершена.
Конечно, строго говоря, в случае обмана жертва проиграет меньше, если согласится открыть залог несмотря на обман, но та же самая логика относится к личным отношениям или двум фирмам с равными инвестициями в отношение. Никто не может быть уверен, что другая сторона будет ждать разрешения конфликта, или же она пойдёт на эскалацию невзирая на убытки. Чтобы узнать, работает ли эта схема на самом деле, мы должны опробовать ее в реальной практике. Кажется, что при правильном использовании у людей нет стимула обманывать контрагента — ведь они теряют больше, чем прибыль от обмана. Поэтому, такая схема опасна для мошенников. Однако, иногда жизнь оказывается сложнее формальной логики.
Эта схема может работать, если у каждой из стороны в наличии больше заблокированных биткойнов, чем сумма самой сделки. Это не всегда возможно, например, в случае покупки дорогой недвижимости. Но для многих других крупных сделок это будет вполне рабочая схема, так как такая операция может быть разбита, например, на 10 шагов, после каждого из которых будет производиться платеж. Тогда заблокированная сумма каждый раз не будет превышать 1/10 всего залога.
Если кому-то интересны технические детали транзакции, они здесь:
Для простоты, давайте скажем, что у нас нет проблемы со «сдачей», и на каждый вход подается ровно нужное количество биткойнов. Тогда у транзакции есть ровно два входа и два выхода. Каждый вход подписывает всю транзакцию, за исключением другого входа (используя флаг SIGHASH_ANYONECANPAY), чтобы позволить другой стороне подписать свой вход независимо без дополнительного обмена туда и обратно.
Выходы симметричны, поровну в каждую сторону. Каждый выход посылает заранее определенную сумму биткойнов.
AlicePK CHECKSIGVERIFY SHA256 HashA EQUALVERIFY SHA256 HashB EQUALVERIFY BorisPK CHECKSIGVERIFY SHA256 HashA EQUALVERIFY SHA256 HashB EQUALVERIFY
AlicePK и BorisPK — соответствующие публичные ключи (подтверждающие владение). HashA – это хеш SHA256 секретного числа Алисы. HashB – это хэш SHA256 секретного числа Бориса.
Каждый скрипт проверяет, что будущая транзакция будет подписана надлежащим ключом и что предоставлены сразу оба числа, А и B. Чтобы выполнить такой скрипт и перевести деньги, нужно знать оба числа. Скажем, Алиса и Борис успешно закончили свою сделку, и Алиса посылает свое секретное число Борису. Борис делает транзакцию с обоими числами, и обе стороны получают назад свой залог. Если одна из сторон не удовлетворена сделкой, она просто держит свое секретное число при себе, и никто не может вернуть залог.
Эта схема также позволяет организовать частичное возмещение. Если обе стороны хотят вернуть 80% залога, они могут просто создать другую подобную операцию на сумму в 20% от предыдущего залога, после чего разблокировать предыдущий залог.
Этой схемой пока еще никто не пользовался, но она может быть очень полезной при многих обстоятельствах. Например:
- Продажа чего-либо при личной встрече за наличные деньги. Если обе стороны вносят залог, превышающий сумму сделки, и освобождают его только после благополучного возвращения домой, значительно снижается вероятность грабежа одной из сторон в тёмном переулке.
- Продажа незнакомцам в Интернете без посредника (Ebay). Одна сторона посылает товар почтой. Когда он получен, покупатель отсылает платеж назад (через биткойн-систему, Western Union, PayPal или даже телеграфным переводом).
- Контракты с внештатными сотрудниками (фрилансерами). Клиент не знает точно, как и что он хочет сделать на своем веб-сайте, таким образом, они оба с фрилансером блокируют некую сумму, и затем оба имеют взаимный интерес идти навстречу друг другу в решении проблем, руководствуясь здравым смыслом.
- Airbnb без airbnb: залог возвращают, если квартира оказалась именно тем, что было обещано, и платеж сделан полностью. Веб-сайт теперь нужен только для того, чтобы давать информацию о предложении, а также показывать рейтинг и стоимость жилья.
Возможности бесконечны. Та же самая идея может использоваться группой людей для договоренностей с другой группой. Например, «общественный договор», где соседи нанимают коллектив охранников, чтобы защитить свой район.
Стоимость такой операции очень низка. Нет никакого риска контрагента, это позволяет сохранять анонимность, время регистрации занимает несколько минут, и стоит это меньше доллара. Если такой тип транзакции станет популярным, то больше майнеров будет включать ее в блокчейн, и таким образом, это станет еще быстрее и дешевле.
Я сам планирую добавить поддержку таких операций в моем будущем приложении-кошельке для OS X и iOS. Я выложил в открытый доступ его базовую часть, которая называется CoreBitcoin. Другие могут попробовать реализовать эту же или подобные идеи в своих собственных приложениях и сервисах. Если это окажется полезным, мы можем стандартизировать такие контракты и протокол подписания, чтобы больше людей могло легко ими пользоваться
0 коммент.:
Отправить комментарий