Как технически работает система транзакций Satoshi Dice с нулевым подтверждением?

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

Биткойн-игра SatoshiDice работает с нулевыми подтверждениями [...] Это безопасно, потому что всегда строит ответную транзакцию с выводом транзакции вашей ставки. Это означает, что блокчейн, не содержащий вашей ставки, не может содержать ответ сайта.

Я думаю, что понимаю теорию, стоящую за этим: Satoshi Dice всегда возвращает монеты из вашей собственной ставки. Поэтому, если ваша ставка не будет подтверждена, ваш выигрыш также не будет подтвержден.

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

Спасибо за ваши предложения.

Ответы (3)

Транзакция запрашивает некоторые выходные данные из предыдущих транзакций, а затем создает новые выходные данные, суммарная стоимость которых равна (или меньше, в случае сборов) сумме заявленных значений выходных данных.

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

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

Очень умный. Спасибо за объяснение! Думаю, я мог бы использовать команду «createrawtransaction» для создания таких транзакций, верно?
Кажется, никто не ответил на ваш вопрос о том, как создать такой tx. Я предполагаю, что это createrawtransactionдолжно сделать это. Я сам использовал bitcoinj и bccapi для создания таких транзакций, но не пробовал использовать bitcoind. Кроме того, blockchain.info позволяет транслировать такие необработанные транзакции без запуска собственного клиента. Unowallet — это кошелек, который позволяет вам тратить монеты без каких-либо подтверждений.

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

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

поэтому, в отличие от денег, вы не можете сделать следующий шаг в магазин, взять товар в долларах и оставить 90 центов на прилавке, выйти, а затем попытаться вернуть этот товар позже для получения кредита в магазине. 90 центов аннулируют всю транзакцию, которую я дал ноль, а затем отправил мне несколько биткойнов, которые я никогда не отправлял каждый раз, когда отправляется биткойн, новый владелец становится частью этого биткойна, его адрес отпечатывается на нем, поэтому, если SatoshiDice никогда не получил ваш биткойн официально, тогда они не могут отправить его вам обратно, так как это будет биткойн, которого в некотором смысле не существует, поэтому дебаты по поводу сброса блокчейна для уменьшения расширения хранилища являются большой проблемой, что ж, это можно было бы сделать другой историей для другого дня. Короче говоря, это сделало бы своего рода праздник биткойн-банка вероятным через несколько часов, поскольку сетьпришлось бы закрыться, как при прекращении приема платежей, затем проверить все принятые платежи, затем уменьшить каждый биткойн до базового хэша, минимизирующего всю его историю, а затем заставить кошельки сократить это, используя стандартизированный алгоритм для тех, кто не тратит большую часть того, что у них есть нет проблем, обычный компьютер выполнит стандартный кошелек менее чем за 5 минут, более старый смартфон может занять день, даже iphone может занять полчаса, в большинстве случаев большинство людей будут готовы к работе до того, как цепочка блоков будет восстановлена. ожидание будет транзакциями, которые должны быть проверены майнерами, поскольку нестатическая сеть никогда не сможет вернуться к синхронизации вне темы, но суть в том, что SatoshiDice безопасен из-за характера того, как транзакции проверяются, если сброс цепочки блоков должен был произойти скажем, раз в месяц, тогда SatoshiDice, скорее всего, отменит вседелать ставки на этот день и возобновить через час после того, как сеть была подтверждена, что она запущена и работает, тогда у вас все еще есть доверие к центральному серверу для всех прошлых транзакций. Я хотел бы увидеть систему, подобную торренту, чтобы разделить цепочку блоков для более быстрого доступа. и безопасное хранение