7. ¡A jugar!
Los tests se aseguran que cada extrinsic funcione bien, de acuerdo a los casos de prueba que se nos ocurren. Es buena idea interactuar con la pallet en un ambiente más cercano al de producción, al que usarán los usuarios. Aquí entra Polkadot JS Apps. Dado que no tenemos un UI específico para nuestra aplicación, usaremos Polkadot JS Apps para jugarlo.
Cómo jugar
Para jugar, usamos Polkadot JS Apps para llamar los extrinsics con dos cuentas, por ejemplo ALICE y BOB. El flujo es:
- Ambos jugadores se registran
- Ambos jugadores se comprometen
- Ambos jugadores revelan
- Cualquier usuario llama
finalizar_juego
Lo más complicado es conseguir el hash para la etapa de compromiso. El procedimiento es el mismo que hicimos en el test, así que podemos crear un test solo para generar dos hashes, imprimirlos y copiarlos de ahí. Este es el aspecto con peor UX a la hora de jugar. Para producción, lo mejor sería una UI en la que al elegir la jugada ya se elija un número aleatorio seguro y nos copie el hash y el nonce.
Hay una función en el repo, conseguir_compromiso, que puede ser útil.
Ejemplo de una partida
Próximos pasos
¡Hemos armado nuestra propia pallet! La pallet es suficiente para poder jugar partidas de piedra, papel o tijera on-chain, pero hay más features que podríamos agregarle:
- Agregar períodos máximos de tiempo para comprometerse y revelar.
Permitir terminar la partida si uno de los jugadores se pasa del tiempo.
Actualmente una partida puede durar indefinidamente.
Ayuda: agregar constantes
PeriodoCompromisoyPeriodoRevelaciona la configuración. - Permitir más de una partida a la vez.
Actualmente solo pueden jugar dos personas a la vez.
Ayuda: cambiar el arreglo de jugadores por un
StorageMapde partidas a jugadores. - Crear una UI para jugar de manera más cómoda que con Polkadot JS Apps. Ayuda: leer la documentación de Polkadot JS.
- Benchmarking para preparar la pallet para producción. Ayuda: leer la documentación de benchmarking.
En el próximo módulo, hablaremos sobre Polkadot y veremos cómo convertir nuestra cadena en una parachain para liberarla en la testnet pública Rococo.