Как SatoshiDice работает с 0 подтверждениями?

Я понимаю, что они используют вашу ставку как вход, но что это значит и как они это делают? Могут ли они использовать стандартный биткойн в качестве сервера для запуска API?

Они не используют стандартный биткойн.
Откуда вы знаете?
SatoshiDice использует биткойн для создания своих транзакций.
Предлагает ли bitcoinj что-то, чего нет в bitcoind?
@Shamoon, конечно, да, иначе зачем бы им его использовать?
@lohoris, можете ли вы уточнить, что он предлагает, что отличается?
@ Шамун нет, понятия не имею. Просто очевидно, что это так.
@Lohoris, на самом деле это не очевидно. вы делаете предположение. было бы неплохо, если бы, когда вы делаете предположения, вы попытались бы объяснить

Ответы (3)

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

Шахтер --> Вы --> Я --> SatoshiDice --> Я

Итак, вы отправляете мне половину биткойна, а я использую клиент, который позволяет мне мгновенно отправить его в SatoshiDICE. Затем SatoshiDICE включает по крайней мере часть этого платежа в свою выплату по выигрышу или проигрышу.

Как только ваш платеж мне подтвердится, мой платеж SatoshiDICE сможет подтвердить. Как только мой платеж SatoshiDICE будет подтвержден, их выплата мне может быть подтверждена.

Так что, если вы меня обманули, и ваш платеж мне был двойным, он никогда не подтвердится (достигнув 6 подтверждений). И, в свою очередь, моя транзакция в SatoshiDICE никогда не подтвердится. И, в свою очередь, транзакция выплаты SatoshiDICE мне никогда не подтвердится.

Так что неважно, что я сразу увидел транзакцию выплаты от SatoshiDICE, я не могу ее никуда потратить, пока она не подтвердится.

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

Вот пример транзакций для проигрышной ставки в 0,02041833 BTC:

Вы можете увидеть поток визуально здесь:

  • http://blockchain.info/tree/16104343 (нажмите на оранжевую точку для оплаты 0,01569037 BTC, которая была одним из двух входов для оплаты ставки).
Не лучше ли в качестве примера использовать транзакцию выигрышной ставки?
Я просто пытался найти хорошую автономную выигрышную транзакцию, которая была бы такой же простой, как та, которую я выбрал для этого, но те, которые я продолжал находить, были все последовательными ставками (от ботов), которые вносят путаницу. Так что нет, это показывает все, что нужно, и у меня нет выигрышной ставки, чтобы показать. Извиняюсь.
Могу ли я отправлять монеты так же, как это делает SathoshiDice, используя стандартный клиент?

Если SatoshiDice выплатила так быстро, как только могла, то что сказать, что злоумышленник сделал следующее, отправляя биткойны, чтобы сделать ставку:

  1. Если ставка выиграла, нападающий получает выигрыш и больше ничего не делает, или
  2. Если ставка проигрывает, злоумышленник пытается получить двойную трату биткойнов для большей части сети. В случае успеха они, по сути, получают обратно свою ставку SatoshiDice.

Даже доли секунды могут иметь значение для потенциального успеха такой атаки, поэтому, если у SatoshiDice есть, скажем, 10-секундная задержка перед выплатой, тогда атака может стать практически невозможной, если злоумышленник каким-то образом не отключит SatoshiDice от большая часть сети (очень трудно достичь).

Они все еще могли сделать это, не отключая SatoshiDice, используя атаку Финни . Но запуск атаки Финни достаточно дорог (риск потери добытого блока), поэтому я не думаю, что есть о чем беспокоиться.

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