¿Cómo funciona SatoshiDice con 0 confirmaciones?

Entiendo que usan tu apuesta como entrada, pero ¿qué significa eso y cómo lo hacen? ¿Pueden usar el bitcoind estándar como servidor desde el cual ejecutar la API?

No están ejecutando el bitcoind estándar.
¿Cómo lo sabes?
SatoshiDice usa bitcoinj para crear sus transacciones.
¿Bitcoinj ofrece algo que bitcoind no ofrece?
@Shamoon, por supuesto que sí, ¿por qué lo usarían de otra manera?
@lohoris, ¿puede aclarar qué ofrece de diferente?
@Shamoon no, no tengo idea. Es obvio que lo hace.
@Lohoris no es realmente obvio. usted está haciendo una suposición. Sería bueno si cuando hace suposiciones que intentaría explicar

Respuestas (3)

Esto está demasiado simplificado, pero aquí hay una secuencia que muestra una serie de transacciones de pago:

Minero --> Tú --> Yo --> SatoshiDice --> Yo

Entonces me envías medio bitcoin y yo uso un cliente que me permite enviarlo instantáneamente a SatoshiDICE. SatoshiDICE luego incluye al menos parte de ese pago en su pago de devolución de ganancias o pérdidas.

Una vez que se confirme su pago a mí, entonces el mío a SatoshiDICE puede confirmar. Una vez que se confirme mi pago a SatoshiDICE, entonces se puede confirmar el pago que me devolvieron.

Entonces, si me engañó y su pago fue un gasto doble, nunca se confirmará (llegando a 6 confirmaciones). Y a su vez, mi transacción con SatoshiDICE nunca se confirmará. Y a su vez, la transacción de pago de SatoshiDICE nunca se confirmará.

Por lo tanto, no importa que vi una transacción de pago de SatoshiDICE de inmediato, no puedo gastarla en ningún lado hasta que se confirme.

Porque incluso una transacción con una o dos transacciones puede quedar huérfana debido a una reorganización en bloque y un ataque de doble gasto, incluso si ve una confirmación que no significa que la transacción se borrará. Es por eso que, a menos que haya recurso, solo seis transacciones es el número recomendado de confirmaciones a requerir.

Aquí hay un ejemplo de las transacciones para una apuesta perdedora de 0.02041833 BTC:

Puedes ver el flujo visualmente aquí:

¿No sería mejor usar una transacción de una apuesta ganadora como ejemplo?
Solo traté de encontrar una buena transacción ganadora independiente que fuera tan fácil como la que había elegido para esto, pero las que seguí encontrando fueron todas apuestas en serie (de bots) que generan confusión. Así que no, esto muestra todo lo que se necesita y no tengo una apuesta ganadora para mostrar. Lo siento.
¿Puedo enviar monedas de la misma manera que lo hace SathoshiDice usando el cliente estándar?

Si SatoshiDice pagó lo más rápido posible, entonces qué dice que un atacante hizo lo siguiente al enviar bitcoins para hacer una apuesta:

  1. Si la apuesta gana, el atacante recibe las ganancias y no hace nada más, o
  2. Si la apuesta pierde, el atacante intenta obtener un doble gasto de los bitcoins para la mayoría de la red. Si tiene éxito, básicamente recuperan su apuesta de SatoshiDice.

Incluso fracciones de segundo marcarían la diferencia en el éxito potencial de dicho ataque, por lo que si SatoshiDice tiene, digamos, un retraso de 10 segundos antes de que pague, entonces el ataque puede volverse virtualmente imposible de lograr a menos que el atacante de alguna manera corte a SatoshiDice. la mayor parte de la red (muy difícil de conseguir).

Todavía podrían hacerlo sin cortar a SatoshiDice usando un ataque de Finney . Pero un ataque de Finney es lo suficientemente costoso como para lanzarlo (riesgo de perder un bloque minado) por lo que no creo que haya nada de qué preocuparse.

Usted crea una transacción con un ID de salida de transacción y le pagan creando una transacción utilizando ese ID de salida de transacción como ID de entrada de transacción. Entonces, si su pago no se realiza, el de ellos tampoco.