После очевидного провала обмена Mt GOx с потерей своих клиентов из Bitcoins и / или денежных депозитов, я должен думать о том, как реализовать P2P алгоритм, который позволил бы людям торговать друг с другом в реальном мире с помощью биткойны на основа ограниченного доверия, а не полагаться на, возможно, не заслуживающей доверия третьей стороны действовать в качестве агента между ними.
Мой личный стимул был купить биткойны с декретной валютой без необходимости третьей стороны. LocalBitcoin очевидный метод, но я живу слишком далеко от любого местного Bitcoin продавца, чтобы сделать это жизнеспособно. Таким образом, независимо от способа, он должен работать между сторонами, которые удалены друг от друга, но, так как я еще не имеют каких-либо биткойнов (или криптовалюта любого рода, и я не хочу, чтобы получить биткойны, пытаясь добыть их), то метод не должен быть зависят от * обеих * сторон уже будет проведение биткойно.
Через пару недель изучения немного о Bitcoin и идти через Bitcoin и других связанных с этим форумов и вики читать о Bitcoin договорах (https://en.bitcoin.it/wiki/Contracts), Сеть Торговая Atomic Кросс (https://en.bitcoin.it/wiki/Atomic_cross-chain_trading), альтернативные цепи (https://en.bitcoin.it/wiki/Alternative_chain), CoinJoin, CoinSwap и т.д., я пришел к выводу, что помимо одна попытка Zangelbert Bingledack (), Большинство из этих подходов ограничивают их преимущественное применение для ненадежного обмена между криптовалюты или получения анонимности трансфертов внутри криптовалюты.
Алгоритм я предлагаю ниже, основан на Bitcoin Contracts.Providing депозита (https://en.bitcoin.it/wiki/Contracts#Example_1:_Providing_a_deposit) И алгоритм обмена P2P Zangelbert Bingledack и требует держателя из Bitcoins временно поставить некоторое Bitcoin обеспечения наряду с их Bitcoin оплатой. Он не предназначен, как предложение изменить протокол Bitcoin, но как Bitcoin новичка я не знаю, если алгоритм может быть полностью реализован с использованием существующего протокола, ни, если я сделал какую-то ошибку в моем использовании Bitcoin сделок; Я действительно заинтересован в получении обратной связи.
Пожалуйста, обратите внимание, что механизм не делает никаких попыток анонимизировать Bitcoin часть обмена; это преднамеренным по двум причинам:
* Я хотел описать основной алгоритм, а не путаться дополнительными шагами анонимных (тем более, что я Bitcoin новичок, и я не совсем понимаю алгоритмов обезличивания, что я читал).
* Я предположил, что ни одна из сторон может (и не хочет / должен) оставаться анонимным в * и * передача Bitcoin и реальный мир доставки.
Use Case
========
Алиса биткойна, что она хочет использовать, чтобы купить реальный мир хорошо с удаленным продавцом, Боба. Боб не имеет * Нет * биткойны. Там будет конечное время между Бобом диспетчерского реальным миром хорошо и Алиса после его получения. ( «Реальный мир хороший» может быть что угодно, например, книга, машина, пицца, стек долларовых банкнот США, электронная (провод) передачи долларов США и т.д. В зависимости от способа доставки, а ' конечное время»может быть всего несколько секунд или минут до столько, сколько дней или даже недель.)
проблема
=======
Алиса и Боб не знают друг друга, и, таким образом, есть только очень низкий уровень доверия друг к другу, чтобы завершить обмен успешно. А также содействие передаче Bitcoins от Алисы к Бобу, алгоритм должен стимулировать как Алиса и Боб, чтобы завершить покупку успешно.
Алгоритм
=========
Предварительно Состояние:
Алиса имеет достаточно биткойна расходуемые в ее Bitcoin адреса (AliceAddr).
Фаза 0:
Шаг 0,0: Алиса и Боб сообщаться согласовать цену Bitcoin покупки (оплаты) для реального мира хорошего, что Боб предлагает. Они также согласны с тем два других условиями: сумма Bitcoin обеспечения (залог), который будет Алиса временно отложить в дополнении к ней сумме платежа и минимальное время (ExpiryTime), что Оплата и Сопутствующая Алисы должны быть заперты, прежде чем они будут возвращены ее, если обмен не завершится успешно. (Использование этих станет очевидным в Дайте описание алгоритма и они обсуждаются далее в конце Дайте описание алгоритма.)
Шаг 0,1: Боб гарантирует, что он имеет Bitcoin адрес для получения платежа (BobAddr).
Шаг 0,2: Боб создает государственно-частное пару ключей (BobKey).
Шаг 0,3: Боб посылает копию своего открытого ключа (BobKey.Pub) Алисе.
Шаг 0,4: Алиса создает государственно-частное пару ключей (AliceKey).
Шаг 0,5: Алиса посылает копию своего открытого ключа (AliceKey.Pub) Бобу.
Шаг 0,6: Алиса посылает копию своего AliceAddr Бобу.
Шаг 0.7: Алиса создает 2-в-2 подписи промежуточного Bitcoin адрес (AliceBobAddr) с использованием AliceKey.Pub и BobKey.Pub.
Шаг 0.8: Алиса шашек промежуточная транзакция (IntermediateTx) передать сумму (Оплату + залог) из Bitcoins от AliceAddr к AliceBobAddr и добавляет ее AliceAddr (.signature).
Шаг 0,9: Алиса посылает копию IntermediateTx.Hash Бобу.
Шаг 0,10: Боб черновики истечения срока действия сделки (ExpiryTx) перевести сумму (Оплата + залог) в Bitcoins от IntermediateTx (.hash) (т.е. от AliceBobAddr) до AliceAddr с замком времени ExpiryTime и добавляет его BobKey подпись.
Шаг 0,11: Боб разрабатывает платежную транзакцию (PaymentTx) передать (оплата) количество Bitcoins от IntermediateTx (.hash) (т.е. от AliceBobAddr) до BobAddr и передать (Collateral) количество Bitcoins от IntermediateTx (.hash) в AliceAddr с время блокировки нуля и добавляет его BobKey подпись.
Шаг 0,12: Боб посылает копию ExpiryTx и PaymentTx Алисе.
Шаг 0,13: Алиса проверяет, что ExpiryTx для передачи суммы (оплата + залога) от Bitcoins от IntermediateTx (.hash) до AliceAddr с замком времени ExpiryTime и что он содержит BobKey подпись Боба.
Шаг 0,14: Алиса добавляет ее AliceKey подпись ExpiryTx и сохраняет ее копию в надежном месте.
Шаг 0,15: Алиса проверяет, что PaymentTx для передачи (Collateral) количество Bitcoins от IntermediateTx (.hash) до AliceAddr с замком времени от нуля и что он содержит BobKey подпись Боба.
Шаг 0,16: Алиса добавляет ее AliceKey подпись PaymentTx и сохраняет ее копию в надежном месте.
Фаза 1:
Шаг 1.1: Алиса передает IntermediateTx к сети Bitcoin.
...В конце концов, IntermediateTx обрабатывается и подтверждается в blockchain.
Шаг 1.2: Алиса говорит Боб, что IntermediateTx было подтверждено в blockchain.
Шаг 1.3: Боб проверяет blockchain, чтобы гарантировать, что IntermediateTx (.hash) был подтвержден и гарантирует, что его выходной адрес один, который совместно заблокирован BobKey.Pub и AliceKey.Pub, то есть, что она AliceBobAddr.
Шаг 1.4: Боб проверяет blockchain, чтобы гарантировать, что AliceBobAddr содержит сумму (Оплата + залог) в Bitcoins.
Фаза 2:
Шаг 2.1: Боб посылает реальный мир хорошего Алисе.
Шаг 2.2: Боб сообщает Алисе, что реальный мир хороший был послан.
...В конце концов, Алиса получает реальное мировое благо.
Фаза 3:
Шаг 3.1: Алиса передает PaymentTx к сети Bitcoin.
...В конце концов, PaymentTx обрабатывается и подтверждается в blockchain: (оплаты) Bitcoins передаются от AliceBobAddr к BobAddr и (обеспечения) Bitcoins передаются от AliceBobAddr к AliceAddr.
обсуждение
==========
Мы можем посмотреть на то, что стоять в живой и Боб, чтобы получить или потерять во время каждого этапа алгоритма, если обмен не может на этом этапе ...
Фаза 0:
* Алиса не получает ничего.
* Алиса ничего не теряет.
* Боб ничего не выиграет.
* Боб ничего не теряет.
Фаза 1:
* Алиса не получает ничего.
* Алиса ничего не теряет, но ее (Оплата + Обеспечения) Bitcoins застряли в AliceBobAddr. Алиса ждет, пока ExpiryTime не будет достигнуто, а затем передает ExpiryTx в Bitcoin сети, которые при добавлении к blockchain, перенесет ее биткойны из AliceBobAddr обратно AliceAddr. (Нотабене Это отличается от Contracts.Providing алгоритма Депонирования в этом ExpiryTx не передаются сразу после IntermediateTx, так как я считаю, что замена сделки не является (никогда не было?) Поддерживаются в протоколе Bitcoin.)
* Боб ничего не выиграет.
* Боб ничего не теряет.
Фаза 2:
* Алиса получает реальный мир хорошо.
* Алиса ничего не теряет, но ее (Оплата + Обеспечения) Bitcoins застряли в AliceBobAddr. Алиса ждет, пока ExpiryTime не будет достигнуто, а затем передает ExpiryTx в Bitcoin сети, которые при добавлении к blockchain, перенесет ее биткойны из AliceBobAddr обратно AliceAddr.
* Боб ничего не выиграет.
* Боб теряет реальный мир хорошо.
Фаза 3:
* Алиса получает реальный мир хорошо.
* Алиса ничего не теряет.
* Доходы Боб (оплаты) Bitcoins.
* Боб ничего не теряет.
Это не уничижительный комментарий и мое намерение сделать его определенно * не *, чтобы начать войну пламени, но в большинстве своего чтения Bitcoin форумов кажется, что сторонники Bitcoin склонны рассматривать себя как более вероятно, а жертвы чем преступники потенциального мошенничества. Вообще говоря, Bitcoin, как и любой декретных валюты, только действительно стоит столько же, сколько реальных товаров и услуг, которые он может быть заменен на, ни сейчас, ни в будущем, и, таким образом, на мой взгляд, что истинное значение в обмене, что Я описал обретается в реальных товаров и потеря стоимости ложится на нераспределенную владельца реальных товаров, то есть Боб. (Это несмотря на реальном мире счет, и, таким образом, стоимость, воплощенная в Bitcoin его производства, т.е. добычи.)
Таким образом, моя мысль заключается в том, что это стоит открытия риск владельцев Bitcoin, имеющих свои Bitcoin средств связанно из-за злонамеренно фиктивными (хотя в конечном счете * не * мошеннический) реальный мир обмен предлагает против реального мира сторон будучи обманутые их реальных товаров мошенническими владельцев Bitcoin. Это, несмотря на возможность случайного, невредоносной потери реальных партий, например Алиса умирает до завершения обмена, или же потерять ключ ее AliceKey (.Private) и / или потери ее копию PaymentTx и будучи не в состоянии завершить обмен ... хотя, если она нравственный человек должен связаться с Бобом и либо регенерировать PaymentTx с ним или же сделать оплату Bitcoin непосредственно к нему, даже если она может эффективно иметь «потерянные» ее Bitcoins, которые застряли в AliceBobAddr.
Интересные и неопределенные вопросы, какие должна быть размером залога, публикуемым держателем Bitcoin и какова должна быть продолжительностью истечения времени до оплаты и залог освобождаются обратно в держатель Bitcoin в выдумать либо держатель Bitcoin * или * реальный мир хороший владелец не в состоянии завершить свои стороны обмена?
По крайней мере, ExpiryTime не должно быть меньше, чем время, которое, как ожидается, потребуется для передачи в реальном мире хорошего от Боба к Алисе.
Но в конечном счете, это до протагонистов обмена (Алиса и Боб), чтобы прийти к взаимному согласию не только сумма платежа, но и сумма залога и время истечения срока. Их предложения и контрпредложения в шаге 0.0, естественно, должны быть осведомлены о возможных обменов, которые обе стороны могли бы сделать с другими Bitcoin и / или реальных владельцев мировых товарных, которые могут предложить более выгодные условия.
Тем не менее, я утверждаю, что сумма залога должна быть достаточно большой, и времени истечения достаточно долго, так что комбинация действует как deterent на держателе Bitcoin отказываться от завершения обмена.
Если реальный мир хорошо можно подразделить каким-то образом, то альтернативный подход заключается в применении алгоритма к каждому subdivisional обмена; уменьшение размера потенциальной потери (и, таким образом, снижение уровня доверия, необходимого) в каждом subdivisional обмена делает сумму риска на биржах subdivisional меньше, чем риск единого, всеохватывающего обмена. Кроме того, бывает, что каждый успешный обмен subdivisional снижает риск каждого последующего subdivisional обмена, поскольку он повышает уровень доверия, что стороны друг в друге. Очевидно, что если передача реального мира благ не может быть разделена в нескольких, indepedent обменов, то риск и отсутствие доверия переносится через subdivisional обмены одной или другой стороны.
Хотя крупные залоговые суммы и длительные сроки годности открыть возможность злонамеренна фиктивным, «анти-Bitcoin» реального мира ( «honeytrap») предлагает, то deterent не должно быть слишком мягким, если есть подозрение, что владелец Bitcoin никогда не намереваясь передавать какой-либо из ее Bitcoins в будущем (и не возражает против их взаперти в течение периодов времени) и просто используют их, чтобы обмануть реальные партии своих товаров в то же время.
Учитывая, что обмен алгоритм, предложенный выше, зависит от главных героев * предполагающих * ограниченная степень доверия, чтобы начать с, в идеале каждый из них может сделать с каким-то эмпирического доказательством того, что другая сторона заслуживает, по крайней мере, минимального уровня доверия к процесс обмена начать. Мое намерение произвести отдельный пост, ссылаясь обратно к этому, предлагая свои идеи о том, как это могло бы быть возможным для сторон в обменах, осуществляемых в рамках алгоритма, описанного выше, чтобы получить широкое доверие через публичный отчет успешно завершенных обменов.
Вопросы / Запросы от Автора
==================================
* Может кто-нибудь объяснить точные детали того, как сделки IntermediateTx и PaymentTx создаются с Элис и «подписью» Боба (для перевода средств из AliceBobAddr) без Алисы и / или Боб возможности украсть подписи друг друга и просто взять содержимое из AliceBobAddr для себя.
* В качестве единственного владельца Bitcoins, Алиса подобрать вкладку для любых Bitcoin операционных издержек, которые обусловлены (хотя величина платежа может быть взаимно согласована Алисой и Бобом, чтобы отразить этот факт). операционные издержки должны быть приняты во внимание в приведенном выше алгоритме, и если да, то как?
* Алгоритм требует ряда шагов, которые начинающие пользователи могут найти слишком неудобными, чтобы осуществить себя; может быть алгоритмом (пол) автоматизировано в бумажнике программного обеспечения?