Bueno, he decidido que yo también quiero timar a la gente
.
He hecho un jueguecito online, nada muy sofisticado. Muy resumidamente: los usuarios escogen entre 1 y 6 cartas y envían bitcoins a una dirección. Cuando esa transacción es incluida en un bloque, se toma el hash del bloque y de él se derivan entre 1 y 6 cartas (el mismo número que el usuario). Si el usuario ha escogido cartas más altas, gana.
Menos resumidamente: se presentan 50 cartas boca abajo, que van desde el 7 de tréboles hasta el as de picas (las cartas del 2 al 6 no existen). Arriba hay un slider según el cual se puede cambiar esta composición, de forma que podemos hacer que sólo haya sietes, que haya sietes y ochos… o que sólo haya ases. Con esto se ajusta la dificultad del juego. A continuación se pincha en las cartas para seleccionarlas, y por último se introduce una dirección de bitcoin para recibir el premio. Al pinchar en el botón de Submit, se muestra la dirección a la que enviar la apuesta. Cuando la transferencia alcanza una confirmación, se toma el hash del bloque relevante, se combina con un valor aleatorio y del resultado se derivan otras cartas. Dependiendo de las cartas escogidas por el usuario y las calculadas a partir del hash del bloque, se determina si el usuario gana o pierde. La página se refresca sola para mostrar el resultado. Si el usuario gana, recibe el premio en la dirección especificada.
Las cartas derivadas del hash del bloque siempre van de 7 a As, así que si el usuario ha configurado que entre las 50 cartas sólo haya sietes, le resultará más difícil ganar, pero el premio será mayor. Si elige que sólo haya ases ganará con mucha más frecuencia, pero naturalmente el premio será más pequeño. Todas y cada una de las cartas escogidas por el usuario deben ser iguales o mayores a las calculadas, lo que significa que cuantas más cartas se escojan, más difícil será ganar.
Tanto las cartas que están boca abajo como el valor aleatorio que se combina con el hash del bloque están calculados de antemano, y se muestra un hash SHA384 de estos valores para demostrar que no hay trampa (es decir, que no cambian cuando el juego conoce qué cartas ha elegido el usuario). Al final del proceso se muestra la cadena de texto para que los usuarios puedan comprobar que todo encaja.
Hay una ayuda en inglés, que hoy por hoy no tengo mucha intención de traducir (no por la traducción en sí, sino por la infraestructurita que hay que montar por debajo). Si queréis, lo puedo poner aquí traducido.
Las apuestas están un tanto limitadas en función de los premios; bueno, es que hay poca pasta
. Las apuestas enviadas que estén fuera de los límites se devuelven (restándoles 0.0005 btc, que se usan como comisión de la transacción de la devolución). Si una apuesta está fuera del límite inferior y además es menor que 0.0005, no se devuelve nada (que por lo que veo, es la práctica habitual ahí fuera).
Entre juego y juego se memorizan los valores seleccionados (composición del mazo, cartas seleccionadas y dirección a la que enviar el premio). Esto va en una cookie, y es (o debería ser) el único uso de cookies.
Está
aquí. Por supuesto se aceptan preguntas, comentarios, críticas y todo eso.