Giochi di fortuna competitivi hostless peer-to-peer? [chiuso]


15

Mi chiedo: sono mai stati creati giochi che sono:

  • peer-to-peer senza un peer designato come host
  • competitivo (non cooperativo, i giocatori giocano l'uno contro l'altro)
  • dimostrabilmente equo (non c'è possibilità che nessun giocatore imbroglia)
  • Non fornire a nessun giocatore più informazioni di quelle di cui ha bisogno (ad esempio, non rivelare i segreti degli altri giocatori nemmeno alle applicazioni in esecuzione)

Un esempio di tale gioco sarebbe un gioco di poker in cui ogni giocatore e i suoi giochi sarebbero in grado di conoscere solo la propria mano, ma non le mani di altri giocatori senza fare affidamento sul fatto che nessuno di loro sia l'host del gioco. So che ci sono alcuni giochi là fuori che sono decisamente equi, ma tutto ciò che so esiste in una configurazione server-client.


1
"peer-to-peer" e "non c'è possibilità che nessun giocatore tradisca" - Non è possibile.
Kikaimaru,

7
@Kikaimaru Ti sbagli.
Sam Hocevar,

@Kikaimaru In realtà, ho un'idea di come potrebbe funzionare, ma vorrei prima chiedere in giro prima di provare a reinventare la ruota (ok, in questo caso forse un aereo).
ThePiachu

2
Dubito fortemente che esista un metodo che impedisce di imbrogliare a livello di server-client. I giocatori possono ad esempio sapere che gli altri giocatori stanno imbrogliando e smettono di giocare - senza bisogno di alcun codice (o puoi semplicemente smettere di giocare), ma è "nessuna possibilità di imbrogliare"?
Kikaimaru,

@Kikaimaru Se il protocollo impone la correttezza, tentare di imbrogliare equivale a non giocare affatto - se ci sono più di due giocatori, gli altri giocatori possono continuare a giocare e il tentativo di imbroglio verrà ignorato non diversamente da un pacchetto IP non valido essere.
Sam Hocevar,

Risposte:


19

Non so se tali giochi siano stati creati, ma sicuramente sono stati teorizzati. Sono stati pubblicati numerosi articoli sull'argomento. Potresti voler ricercare schemi di impegno che offrano una spiegazione di come due parti in disaccordo possono lanciare una moneta mentre sono fisicamente distanti (vedi anche questo articolo del 1981: Coin Lancio al telefono ).

Un documento molto approfondito è ad esempio i giochi di carte collezionabili peer-to-peer a prova di imbroglione :

Proponiamo un protocollo peer-to-peer a prova di frode per l'implementazione di giochi di carte collezionabili online. Analizziamo le azioni comuni a tutti i TCG e spieghiamo come possono essere eseguite tra due giocatori senza la necessità di un arbitro di terze parti (che di solito richiede un server imparziale). In ogni azione, al giocatore viene impedito di imbrogliare o, se lo fanno, l'avversario sarà in grado di dimostrare di averlo fatto . Concludiamo mostrando come questi metodi sono sicuri e in che modo possono essere mescolati per altri stili di TCG e altri giochi peer-to-peer.

Inoltre, Cheat-Proof Playout per giochi centralizzati e peer-to-peer :

Proponiamo un protocollo che ha garanzie anti-imbrogli dimostrabili, è sicuro e vivo , ma subisce una penalità di prestazione. Sviluppiamo quindi una versione estesa di questo protocollo, chiamata sincronizzazione asincrona, che evita la penalità, è priva di server, offre garanzie anti-cheat dimostrabili, è robusta in presenza di perdita di pacchetti e fornisce prestazioni di comunicazione significativamente aumentate. Questa tecnica è applicabile alle funzionalità di gioco comuni nonché alle tecniche di clustering e basate su celle per giochi multiplayer di massa. In particolare, forniamo un protocollo a prova di conoscenza zero in modo che i giocatori si trovino entro un raggio specifico l'uno dall'altro, e altrimenti non abbiano idea della loro distanza. Le nostre dichiarazioni di prestazione sono supportate da analisi che utilizzano una simulazione basata su tracce di gioco reali.


1
Vedi anche la pagina di Mental Poker su Wikipedia - en.wikipedia.org/wiki/Mental_poker . C'è stata una discussione sul forum Bitcoin sulle potenziali applicazioni di questo bitcointalk.org/index.php?topic=1487.0
liamzebedee,

Ottimo collegamento @liamzebedee. Quell'articolo ha praticamente l'algoritmo esatto che fa funzionare il poker peer-to-peer.
captncraig,

4

Sebbene non sia un gioco d'azzardo, sto sviluppando un gioco AIR vicino alle tue esigenze.

  1. Sviluppato utilizzando il protocollo multicast RTMFP di Flash. Nessuno dei due client è considerato host.
  2. Sistema competitivo basato sulla fisica.
  3. Verifica l'input dell'avversario e squalifica il gioco su dati non validi.
  4. Non trasmette determinate informazioni fisiche per motivi di larghezza di banda / latenza (questo ha disabilitato anche alcuni metodi di imbroglio).

Tuttavia, si prega di notare ...

Considero "nessuna possibilità di ... imbrogliare" un'affermazione falsa. Se non controlli tutti gli aspetti (hardware e software), è possibile imbrogliare.

Sebbene non sia un gioco, penso che la rete Bitcoin sia un ottimo esempio di ciò che stai cercando.

modificare

Espanderò un po 'la tua domanda principale.

In primo luogo, non riesco a vedere alcun gioco che richieda condizioni "equamente dimostrabili" senza un certo livello di requisiti autorevoli. Dalle classifiche ai micropagamenti, i sistemi centralizzati e l'autorità vanno di pari passo.

In secondo luogo, il miglior gioco di esempio che mi viene in mente sono i primi giochi di Pokemon. Anche se la logistica della rete interna potrebbe non essere stata peer-to-peer, segue lo stesso principio.

Infine, le piattaforme mobili sono particolarmente adatte per i giochi peer-to-peer. Ritengo che questo campo sia molto carente, per questo sto attualmente sviluppando una linea di giochi peer-to-peer.


Sì, potrei avere qualche esperienza con Bitcoin ... bitcoin.stackexchange.com/users/323/thepiachu ;)
ThePiachu

1

Alcuni pezzi che potrebbero aiutare, a seconda dei casi d'uso:

Se è necessario ottenere input simultanei dagli utenti senza la possibilità che uno possa utilizzare le informazioni a proprio vantaggio prematuramente, è possibile utilizzare lo schema di impegno. Essenzialmente questo è:

  1. Entrambi i giocatori forniscono un hash dell'azione che desiderano intraprendere.
  2. Dopo che entrambi hanno fornito il loro impegno, entrambi possono fornire le loro azioni in chiaro.
  3. Il testo in chiaro può essere confrontato con gli hash per verificare che nessuno abbia cambiato risposta dopo aver appreso l'azione dell'altra persona.

Questo può essere usato per una varietà di cose, incluso un numero casuale condiviso (entrambi forniscono un numero intero tramite impegni e li raggruppano dopo averlo condiviso per ottenere il valore condiviso).

Ciò non è sufficiente per un gioco come il poker, perché richiede che le carte siano conosciute da una sola persona, pur continuando a pescare dal mazzo condiviso. Wikipedia ha un algoritmo abbastanza buono per il mescolamento condiviso usando uno schema in cui entrambi i giocatori crittografano ogni scheda singolarmente più volte. Questo crea una situazione in cui sono richieste 2 chiavi per decrittografare una determinata carta, ed entrambi i giocatori hanno 1. L'articolo cita problemi di prestazioni, ma non credo che AES o simili siano proibitivi in ​​termini di costi nella scala richiesta per il poker a 2 giocatori.

Se stavo progettando un algoritmo avrei i giocatori a calcolare un valore casuale all'inizio del gioco da utilizzare come seme per tutto il resto delle operazioni e condividere un hash di quel valore. In questo modo possono condividere quel valore dopo il gioco e puoi verificare che abbiano seguito correttamente il protocollo, senza shenanigans.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.