¿Juegos de azar competitivos sin host de igual a igual? [cerrado]

15

Me pregunto: ¿se han creado juegos que sean:

  • punto a punto sin que un punto sea designado como host
  • competitivo (no cooperativo, los jugadores juegan uno contra el otro)
  • Probablemente justo (no hay posibilidad de que ningún jugador haga trampa)
  • No le dé a ningún jugador más información de la que necesita (por ejemplo, sin revelar los secretos de otros jugadores incluso a las aplicaciones en ejecución)

Un ejemplo de un juego de este tipo sería un juego de póker donde cada jugador y sus juegos solo podrían conocer su propia mano, pero no las manos de otros jugadores sin depender de que ninguno de ellos sea el anfitrión del juego. Sé que hay algunos juegos que son demostrablemente justos, pero todo lo que sé existe en una configuración servidor-cliente.

ThePiachu
fuente
1
"peer-to-peer" y "no hay posibilidad de que ningún jugador haga trampa" - Eso no es posible.
Kikaimaru
77
@Kikaimaru Estás equivocado.
sam hocevar
@Kikaimaru En realidad, tengo un concepto de cómo podría funcionar esto, pero me gustaría preguntar primero antes de intentar reinventar la rueda (está bien, en este caso, tal vez un avión).
ThePiachu
2
Dudo mucho que haya un método que evite hacer trampa en el nivel que lo hace el servidor-cliente. Los jugadores pueden, por ejemplo, saber que otros jugadores están haciendo trampa y dejan de jugar, sin necesidad de ningún código (o simplemente puedes detener el juego), pero ¿es eso "ninguna posibilidad de hacer trampa"?
Kikaimaru
@Kikaimaru Si el protocolo impone la corrección, intentar hacer trampa es lo mismo que no jugar en absoluto; si hay más de dos jugadores, los otros jugadores aún pueden seguir jugando y el intento de trampa será ignorado, a diferencia de un paquete IP no válido. ser.
sam hocevar

Respuestas:

19

No sé si tales juegos han sido creados, pero seguramente han sido teorizados. Se han publicado varios artículos sobre el tema. Es posible que desee investigar esquemas de compromiso que ofrezcan una explicación de cómo dos partes en desacuerdo pueden lanzar una moneda mientras están físicamente distantes (vea también este artículo de 1981: Lanzamiento de monedas por teléfono ).

Un artículo muy completo es, por ejemplo, Cheat-Proof Peer-to-Peer Trading Card Games :

Proponemos un protocolo peer-to-peer a prueba de trampas para implementar juegos de cartas coleccionables en línea. Desglosamos las acciones comunes a todos los TCG y explicamos cómo se pueden ejecutar entre dos jugadores sin la necesidad de un árbitro externo (que generalmente requiere un servidor imparcial). En cada acción, se impide que el jugador haga trampa o, si lo hace, el oponente podrá demostrar que lo ha hecho . Concluimos mostrando cómo estos métodos son seguros y cómo se pueden mezclar para otros estilos de TCG y otros juegos entre pares.

También Playout-Proof Playout para juegos centralizados y entre pares :

Proponemos un protocolo que tiene garantías contra el engaño comprobables, es demostrablemente seguro y vivo , pero sufre una penalización de rendimiento. Luego desarrollamos una versión extendida de este protocolo, llamada sincronización asincrónica, que evita la penalización, no tiene servidor, ofrece garantías comprobables contra trampas, es robusta en presencia de pérdida de paquetes y proporciona un rendimiento de comunicación significativamente mayor. Esta técnica es aplicable a las características comunes del juego, así como a las técnicas de agrupamiento y basadas en células para juegos multijugador masivos. Específicamente, proporcionamos un protocolo de prueba de conocimiento cero para que los jugadores estén dentro de un rango específico el uno del otro, y de lo contrario no tengan noción de su distancia. Nuestras afirmaciones de rendimiento están respaldadas por análisis que utilizan una simulación basada en trazas de juegos reales.

sam hocevar
fuente
1
También vea la página de Mental Poker en Wikipedia: en.wikipedia.org/wiki/Mental_poker . Ha habido una discusión en el foro de Bitcoin sobre las posibles aplicaciones de este bitcointalk.org/index.php?topic=1487.0
liamzebedee
Gran enlace @liamzebedee. Ese artículo tiene más o menos el algoritmo exacto que hace que el póker funcione bien de igual a igual.
captncraig
4

Aunque no es un juego de azar, estoy desarrollando un juego de AIR que está cerca de tus requisitos.

  1. Desarrollado utilizando el protocolo de multidifusión RTMFP de Flash. Ninguno de los clientes se considera host.
  2. Sistema competitivo basado en la física.
  3. Verifica la entrada del oponente y descalifica el juego con datos no válidos.
  4. No transmite cierta información física por razones de ancho de banda / latencia (esto también deshabilitó ciertos métodos de trampa).

Sin embargo, tenga en cuenta ...

Considero "ninguna posibilidad de ... hacer trampa" una declaración falsa. Si no controlas todos los aspectos (hardware y software), entonces es posible hacer trampa.

Aunque no es un juego, creo que la red Bitcoin es un excelente ejemplo de lo que estás buscando.

Editar

Voy a ampliar un poco su pregunta principal.

Primero, no puedo ver ningún juego que requiera condiciones "demostrablemente justas" sin algún nivel de requisito de autoridad. Desde tablas de clasificación hasta micropagos, los sistemas centralizados y la autoridad van de la mano.

Segundo, el mejor juego de ejemplo en el que puedo pensar es en los primeros juegos de Pokemon. Aunque la logística de la red interna podría no haber sido de igual a igual, sigue el mismo principio.

Finalmente, las plataformas móviles están especialmente adaptadas para juegos entre pares. Considero que este campo es muy deficiente, es por eso que actualmente estoy desarrollando una línea de juegos entre pares.

Nathan Goings
fuente
Sí, podría tener algo de experiencia con Bitcoin ... bitcoin.stackexchange.com/users/323/thepiachu ;)
ThePiachu
1

Algunas piezas que pueden ayudar, según los casos de uso:

Si necesita obtener información simultánea de los usuarios sin la posibilidad de que uno pueda usar la información para su ventaja prematuramente, puede usar el esquema de compromiso. Básicamente esto es:

  1. Ambos jugadores proporcionan un resumen de la acción que desean realizar.
  2. Después de que ambos hayan proporcionado su compromiso, ambos pueden proporcionar sus acciones de texto sin formato.
  3. El texto sin formato se puede comparar con los hashes para verificar que nadie haya cambiado su respuesta después de conocer la acción de la otra persona.

Esto se puede usar para una variedad de cosas, incluido un número aleatorio compartido (ambos proporcionan un número entero a través de compromisos y los agrupan después de compartir para obtener el valor compartido).

Sin embargo, eso es insuficiente para un juego como el póker, ya que requiere que las cartas sean conocidas por una sola persona, mientras que se puede seguir sacando del mazo compartido. Wikipedia tiene un algoritmo bastante bueno para la baraja compartida utilizando un esquema en el que ambos jugadores encriptan cada tarjeta individualmente varias veces. Esto establece una situación en la que se requieren 2 claves para descifrar cualquier carta, y ambos jugadores tienen 1. El artículo cita preocupaciones de rendimiento, pero no creo que AES o similar sea prohibitivamente caro en la escala requerida para el póker de 2 jugadores.

Si estuviera diseñando un algoritmo, los jugadores calcularían un valor aleatorio al comienzo del juego para usarlo como semilla para el resto de las operaciones y compartirían un hash de ese valor. De esa manera pueden compartir ese valor después del juego, y puedes verificar que siguieron el protocolo correctamente, sin travesuras.

captncraig
fuente