¿Puedo usar elementos de la cadena de bloques para proteger la integridad de una tabla de clasificación sin servidores centrales?

Para un concurso de concepción de características de la comunidad de World of Warcraft, se me ocurrió algo que involucra una tabla de clasificación. Sin embargo, los complementos de World of Warcraft son puramente individuales, por lo que no es posible una plataforma centralizada donde generalmente se guarda una tabla de clasificación. Debido a esto, sería trivial falsificar el envío de actualizaciones de tablas de clasificación a la comunidad.

Estuve leyendo sobre la cadena de bloques recientemente y parece que esta podría ser una forma de solucionarlo. La cadena de bloques puede proteger la integridad de las transacciones de Bitcoin, por lo que parece que podría proteger esto. Sin embargo, no estoy 100% seguro.

Mi principal preocupación es evitar que la gente abuse de la clasificación dándose puntos extra. Sin embargo, las transacciones de Bitcoin suelen ser entre 2 partes. ¿Podría la cadena de bloques funcionar solo con transacciones positivas que solo involucren a una sola parte?


Explicación técnica: el concepto general es que los usuarios pueden obtener puntos por completar ciertos desafíos y competir entre ellos en una tabla de clasificación constantemente actualizada, similar a cómo algunos juegos multijugador tienen una lista de los mejores jugadores (cfr. Diablo 2). No hay recompensas vinculadas con la tabla de clasificación más allá de los derechos de fanfarronear.

El problema, sin embargo, es que las tablas de clasificación son susceptibles de manipulación por parte de jugadores maliciosos a menos que tengan suficiente verificación de que las personas realmente lograron lo que dijeron que hicieron. La mayoría de los juegos solucionan esto haciendo que la tabla de clasificación se aloje en un servidor remoto donde el juego le dice al servidor lo que sucedió y el servidor verifica si el cliente podría haberlo hecho.

Sin embargo, en World of Warcraft, los complementos son solo locales: no puede configurar un complemento como servidor para recibir mensajes y realizar una validación central. Puede enviar mensajes desde un cliente adicional a otros clientes a través de un canal central de mensajes adicionales, pero no puede decir "solo enviar mensajes a este cliente", porque el canal no está protegido y cualquier complemento puede registrarse para escuchar un canal. Además, los complementos están escritos en código LUA legible por humanos y no pueden ofuscarse.

Debido a esto, es fácil que un usuario malintencionado manipule su complemento y falsifique los mensajes. O incluso escriba un complemento que envíe un autocompletado para cada desafío recién generado. Este es el problema con las tablas de clasificación distribuidas, se manipulan fácilmente porque no hay verificación de integridad.

Sin embargo, por lo que entiendo, Bitcoin ha logrado solucionar este problema a través de la cadena de bloques. Las transacciones se registran públicamente, se requiere el consenso de la comunidad para que se completen las transacciones y cualquier persona puede verificar el estado final. Sin embargo, la cadena de bloques de Bitcoin maneja transacciones entre 2 partes, por lo que siempre hay 2 fuentes para cada transacción. Debido a esto, es poco probable que un solo usuario pueda manipular la cadena de bloques.

Sin embargo, con las tablas de clasificación, no hay múltiples partes en una transacción. Cada transacción es solo un jugador que recibe puntos de desafío localmente en función de algo que sucede en su máquina. Entonces no hay una segunda parte que ayude contra la manipulación. Esta es una de las razones por las que me preocupa que la cadena de bloques no funcione para esto.

¿Hay algún aspecto de la cadena de bloques que pueda ayudar a defenderse de esto? Y si no, (aunque algo fuera de tema) ¿hay algún método diferente que pueda ayudar a defenderse contra la falsificación?

No entiendo cuál es tu problema ni cómo crees que Bitcoin puede contribuir a solucionarlo. Describirlo en términos más técnicos probablemente ayudará.
La prueba de trabajo (es decir, hashcash) parece una solución a su problema, no tanto Blockchain. Lo que necesita es una disuasión contra la facilidad de acceso y la prueba de trabajo disuade muy bien, ya que los usuarios tendrían que demostrar que han hecho algún "trabajo" para mutar el marcador.
@renlord, estoy editando mi pregunta para aclarar lo que busco.
El problema central descrito imita un problema de generales bizantinos que es un problema de consenso. Bitcoin resuelve esto mediante una prueba de trabajo. En su caso, la prueba de trabajo puede ser una exageración y los juegos a menudo usan lockstep o incluso algún algoritmo paxos para resolver estos problemas.
@renlord Ya veo. Sé que esto está empezando a salirse del tema, pero ¿podría escribir una respuesta basada en mis ediciones menores que acabo de hacer para que al menos pueda darle un representante por ayudarme?

Respuestas (1)

En general, como se menciona en los comentarios. Su problema en estos juegos se parece a un problema de generales bizantinos en el que puede experimentar actores maliciosos o que no cumplen en la red. Para lograr el consenso en este contexto, existen múltiples vías.

En primer lugar, está el enfoque de Bitcoin. Bitcoin permite que cada nodo completo realice una verificación independiente de Blockchain. Blockchain es simplemente un almacén de una serie de eventos pasados ​​que conducen al estado actual. Donde los "eventos pasados" (es decir, transacciones) se almacenan en Bloques y la "cadena" se refiere al requisito estricto de que cada bloque posterior debe depender del bloque anterior en función de un conjunto de requisitos. El acceso a los permisos de escritura de Blockchain se rige por medio de la Prueba de trabajo, donde debe grabar ciclos de CPU para crear un nuevo bloque que implícitamente le otorga un permiso de escritura para agregar a Blockchain. Una diferencia clave aquí es que la Prueba de trabajo no necesita realizarse de manera colaborativa, ya que es un Proceso de Poisson, lo que significa que mis posibilidades son tan buenas como las de cualquier otra persona. asumiendo que todos tienen el mismo poder hash. En otros algoritmos de elección, es posible que tenga que negociar en colaboración y no es necesariamente totalmente tolerante a fallas bizantinas.

Entonces, ¿cómo se pueden aplicar algunos elementos de esto en su contexto de juego? Queda para que usted decida. Pero, en principio, sí, los elementos de Bitcoins son aplicables en el contexto que ha descrito, pero nuevamente, reitero, es algo "exagerado". ¿Tal vez en el contexto del juego, configuraría la tabla de clasificación para que tenga alguna condición que requiera alguna prueba de alguna acción que demuestre que el jugador realmente ha hecho algo para mutar la tabla de clasificación? De lo contrario, probablemente sería más sencillo hacerlo en Lockstep que en los juegos de estrategia en tiempo real.

Como el poder de PoW está dominado por quién invierte la mayor cantidad de dinero en hardware y electricidad, está permitiendo efectivamente que las personas gasten dinero para influir en la clasificación. Eso es casi seguro que no es lo que quieres. Utilice un protocolo de consenso distribuido tradicional en su lugar.
No estoy seguro de si la cadena de bloques protege contra las pruebas presentadas de manera fraudulenta en este asunto. Supongamos que Alice, Bob, Carol, Dave y Eve están jugando. Eve envía un mensaje falso de "Obtuve X puntos" a Alice, Bob, Carol y Dave, donde en realidad no ganó ninguno. ¿No calcularían los 5 el mismo bloque basándose en este mensaje?