Skip to content

Instantly share code, notes, and snippets.

@gdassori
Created April 13, 2024 17:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gdassori/52b906a90a1f89ac63cc313e0f28d5eb to your computer and use it in GitHub Desktop.
Save gdassori/52b906a90a1f89ac63cc313e0f28d5eb to your computer and use it in GitHub Desktop.
Ho pensato a un sistema per la creazione di randomismo fra due parti che non si fidano di loro, con verifica finale, per giochi 1vs1:
- Due parti, entrambe, partono con un Seed Bip32 in mano, ognuna col suo, depositano i soldi su un contratto contestualmente dichiarandogli una chiave pubblica ad altezza 0, e con questa cominciano a giocare (quindi per cominciare la partita entrambe le parti depositano soldi su un contratto e dichiarano un numero da 32bit).
- A ogni round di gioco derivano la Nesima chiave pubblica, e usano quel numero per chiamare entrambi il contratto e procedere col round.
La risultanza dei due numeri verra' usata come seed per produrre il numero randomico di cui hanno bisogno per quel round (quindi seed per la produzione di randomicita' di quel round, che permette di generare N numeri pseudorandomici, e' la risultanza di un'operazione fra le due Nesime chiavi pubbliche dichiarate).
- Alla fine della partita, per fare cassa, devono svelare la master public key, e il contratto deve verificare che tutte le derivazioni, dalla 0 alla nesima, siano corrette. Se una delle due parti ha barato tutti i soldi vengono rilasciati all'altra, a prescindere da come sia andata la partita.
Non so se puo' servire, se ha senso, se esiste gia', e penso sia costoso, ma e' bello ed e' trustless.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment