Tres en raya y contratos inteligentes

Estoy desarrollando un juego de tres en raya donde los jugadores pueden jugar por ETH. Creé un contrato inteligente en el que un jugador envía ETH y balancesse actualiza, el jugador recibe algunos life.

Luego pensé que cuando el jugador juega y gana/pierde, envío una solicitud a un servidor, y ese servidor envía una transacción al contrato inteligente.

¿Es esa la forma correcta de implementación o, por lo general, los desarrolladores usan otro enfoque?

Respuestas (1)

Un enfoque típico sería establecer un contrato que acepte apuestas de dos jugadores por juego y luego dejar que cada uno haga movimientos sobre la marcha. El contrato reenviaría el bote al ganador.

Un problema que no es obvio pero que se aborda fácilmente es el problema del "perdedor". Un jugador que puede ver que no va a ganar nunca toma su turno. Simplemente haga que el contrato declare que el jugador pierde el juego después de un tiempo.

Un solo contrato podría rastrear muchos juegos en curso, con muchos botes. Si fuera realmente serio, podría hacer que los jugadores carguen fondos una vez en una cuenta de jugador para que el movimiento de fondos internamente sea mera contabilidad. Los jugadores cobrarían cuando ya no quieran jugar.

Hay algunas cuestiones regulatorias jurisdiccionales fuera de las cuestiones puramente técnicas. Precaución con eso.

Espero eso ayude.

¡Muchas gracias por la respuesta! Entonces, ¿es esa una forma correcta de enviar la puntuación de un jugador desde el front-end a un servidor, y luego desde el servidor enviar transacciones a un contrato inteligente que actualizará la puntuación allí? ¿Es cierto que necesito crear un servidor que abra una billetera ETH y realice esas transacciones?
Hay más de una forma de hacerlo. Puede ser 100 % sin servidor, con los usuarios pagando un poco de gasolina por cada movimiento, o puede volver a introducir un poco de centralización con un servidor "confiable" para eliminar los costos de transacción para todos los eventos excepto los "esenciales" que necesita que todos los jugadores realicen. Asegúrese de.