Un número cada vez mayor de aplicaciones propuestas además de Ethereum se basan en algún tipo de suministro de datos incentivado de múltiples partes, ya sea votaciones, recopilación de números aleatorios u otros casos de uso en los que es muy deseable obtener información de múltiples partes para aumentar la descentralización, pero también donde existe un fuerte riesgo de colusión. Un RANDAO ciertamente puede proporcionar números aleatorios con una seguridad criptoeconómica mucho más alta que los simples hash de bloque, y ciertamente mejor que algoritmos deterministas con semillas conocidas públicamente, pero no es infinitamente a prueba de colusión: si el 100 % de los participantes en una RANDAO se confabulan entre sí, pueden establecer el resultado como quieran. Un ejemplo mucho más controvertido es el mercado de predicciones. Augurdonde los informes de eventos descentralizados se basan en una versión muy avanzada de un esquema de Schelling, donde todos votan sobre el resultado y todos en la mayoría son recompensados. La teoría es que si espera que todos los demás sean honestos, su incentivo también es ser honesto para estar en la mayoría, por lo que la honestidad es un equilibrio estable; el problema es, sin embargo, que si más del 50% de los participantes se confabulan, el sistema se estropea.
El hecho de que Augur tenga un token independiente brinda una defensa parcial contra este problema: si los votantes actúan en connivencia, se puede esperar que el valor del token de Augur disminuya hasta casi cero a medida que el sistema se perciba como inútil y poco confiable, por lo que los coludidores perder una gran cantidad de valor. Sin embargo, ciertamente no es una defensa total. Truthcoin de Paul Sztorc (y también Augur) incluye una defensa adicional, que es bastante inteligente desde el punto de vista económico. El mecanismo central es simple: en lugar de simplemente otorgar una cantidad estática a todos los miembros de la mayoría, la cantidad otorgada depende del nivel de desacuerdo entre los votos finales, y cuanto más desacuerdo haya, más votantes de la mayoría obtienen, y los votantes de la minoría obtienen una cantidad igualmente grande sacada de su depósito de seguridad.
La intención es simple: si recibe un mensaje de alguien que dice “hey, estoy iniciando una colusión; aunque la respuesta real sea A, votemos todos B”, en un esquema más simple, puede estar inclinado a aceptar. En el esquema de Sztorc, sin embargo, bien puede llegar a la conclusión de que este individuo es Realmente va a votar A, y está tratando de convencer solo un pequeño porcentaje de personas a votar B, para robarles parte de su dinero. Por lo tanto, crea una falta de confianza, lo que dificulta las colusiones. Sin embargo, hay un problema: precisamente porque las cadenas de bloques son dispositivos tan excelentes para acuerdos y coordinación criptográficamente seguros, es muy difícil hacer que sea imposible coludirse. probablemente.
Para ver cómo, considere el esquema más simple posible sobre cómo podría funcionar el reporte de votos en Augur: hay un período durante el cual todos pueden enviar una transacción proporcionando su voto, y al final el algoritmo calcula el resultado. Sin embargo, este enfoque tiene fallas fatales: crea un incentivo para que las personas esperen el mayor tiempo posible para ver cuáles son las respuestas de todos los demás jugadores antes de responderse ellos mismos. Llevando esto a su equilibrio natural, tendríamos a todos votando en el último bloque posible, lo que llevaría al minero del último bloque a controlar esencialmente todo. Un esquema en el que el final llega al azar (por ejemplo, el primer bloque que pasa 100 veces el umbral de dificultad habitual) mitiga esto un poco, pero aún deja una gran cantidad de poder en manos de los mineros individuales.
La respuesta estándar del criptógrafo a este problema es el esquema hash-commit-reveal: cada jugador Pi) determina su respuesta Rhode Island)y hay un período durante el cual todos deben presentar h(R(yo)) donde h puede ser cualquier función hash preespecificada (por ejemplo, SHA3). Después de eso, todos deben enviar Rhode Island)y los valores se comparan con los valores hash proporcionados anteriormente. Para dos jugadores, piedra, papel o tijera, o cualquier otro juego que sea puramente de suma cero, esto funciona muy bien. Para Augur, sin embargo, todavía deja abierta la oportunidad de una colusión creíble: los usuarios pueden revelar voluntariamente Rhode Island) antes del hecho, y otros pueden verificar que esto realmente coincida con los valores hash que proporcionaron a la cadena. Permitir que los usuarios cambien sus hashes antes de que se agote el período de envío de hash no hace nada; los usuarios siempre pueden encerrar una gran cantidad de dinero en un contrato especialmente diseñado que solo lo libera si nadie proporciona una prueba de árbol de Merkle al contrato, que culmina con un blockhash anterior, que muestra que el voto fue cambiado, comprometiéndose así a no cambiar su votar.
¿Una nueva solución?
Sin embargo, también existe otro camino para resolver este problema, uno que aún no se ha explorado adecuadamente. La idea es esta: en lugar de hacer que la pre-revelación con fines de colusión sea costosa dentro del juego principal en sí, introducir un juego paralelo (aunque obligatorio, respaldado por los depósitos de seguridad de los participantes del oráculo) donde cualquiera que revele previamente cualquier información sobre su voto a cualquier otra persona se expone al riesgo de ser (probablemente) traicionado, sin ninguna forma de probar que fue esa persona específica quien los traicionó.
El juego, en su forma más básica, funciona de la siguiente manera. Suponga que existe un esquema de generación de números aleatorios descentralizado en el que todos los usuarios deben lanzar una moneda y proporcionar 0 o 1 como entradas. Ahora, supongamos que queremos desincentivar la colusión. Lo que hacemos es simple: permitimos cualquiera registrar una apuesta en contra cualquier jugador en el sistema (tenga en cuenta el uso de “cualquiera” y “cualquier jugador”; los que no juegan pueden unirse siempre y cuando proporcionen el depósito de seguridad), declarando esencialmente “Estoy seguro de que esta persona votará X con más de 1/2 probabilidad”, donde X puede ser 0 o 1. Las reglas de la apuesta son simplemente que si el objetivo proporciona X como entrada, se transfieren N monedas al apostante, y si el objetivo proporciona el otro valor, entonces se transfieren N monedas. transferido del apostante al objetivo. Las apuestas se pueden realizar en una fase intermedia entre el compromiso y la revelación.
Probabilísticamente hablando, alguna el suministro de información a cualquier otra parte ahora es potencialmente extremadamente costoso; incluso si convences a alguien más de que votarás 1 con un 51 % de probabilidad, todavía pueden quitarte monedas de forma probabilística y ganarán a largo plazo a medida que se repita dicho esquema. Tenga en cuenta que la otra parte puede apostar de forma anónima y, por lo tanto, siempre puede fingir que fue un jugador transeúnte que hizo las apuestas, y no ellos. Para mejorar aún más el esquema, podemos decir que usted debe apostar contra N jugadores diferentes al mismo tiempo, y los jugadores deben seleccionarse pseudoaleatoriamente de una semilla; si desea apuntar a un jugador específico, puede hacerlo probando diferentes semillas hasta que obtenga el objetivo deseado junto con algunos otros, pero siempre habrá al menos alguna negación plausible. Otra posible mejora, aunque tiene sus costos, es exigir a los jugadores que registren sus apuestas solo entre el compromiso y la revelación, revelando y ejecutando las apuestas solo mucho después de que hayan tenido lugar muchas rondas del juego (suponemos que hay un período largo). antes de que se puedan retirar los depósitos de seguridad para que esto funcione).
Ahora, ¿cómo convertimos esto en el escenario del oráculo? Considere una vez más el caso binario simple: los usuarios reportan A o B, y alguna porción P, desconocida antes del final del proceso, reportará A y el 1-P restante reportará B. Aquí, cambiamos un poco el esquema: el las apuestas ahora dicen “Estoy seguro de que esta persona votará X con más de P probabilidad”. Tenga en cuenta que el lenguaje de la apuesta no debe interpretarse como que implica el conocimiento de P; más bien, implica una opinión de que, cualquiera que sea la probabilidad de que un usuario aleatorio vote X es, el usuario en particular al que se dirige el apostante votará X con mayor probabilidad que eso. Las reglas de la apuesta, procesadas después de la fase de votación, son que si el objetivo vota X entonces se transfieren N * (1 – P) monedas del objetivo al apostador, y de lo contrario se transfieren N * P monedas del apostador al apostador. objetivo.
Tenga en cuenta que, en el caso normal, la ganancia aquí está aún más garantizada que en el ejemplo binario de RANDAO anterior: la mayoría de las veces, si A es la verdad, todo el mundo votos por A, por lo que las apuestas serían tomas de ganancias de muy bajo riesgo, incluso si se usaran protocolos complejos a prueba de conocimiento cero para solo dar probabilístico seguridad de que votarán por un valor en particular.
Nota técnica complementaria: si solo hay dos posibilidades, ¿por qué no puedes determinar Rhode Island) de h(R(yo)) simplemente probando ambas opciones? La respuesta es que los usuarios en realidad están publicando h(R(i), n) y (R(i), n) para algunos grandes nonce aleatorios norte eso se descartará, por lo que hay demasiado espacio para enumerar.
Como otro punto, tenga en cuenta que este esquema es, en cierto sentido, un superconjunto del esquema de contracoordinación de Paul Sztorc descrito anteriormente: si alguien convence a otra persona para que vote falsamente B cuando la respuesta real es A, entonces puede apostar en su contra con esta información en secreto. . En particular, beneficiarse de la bajeza moral de los demás ahora ya no sería un bien público, sino un bien privado: un atacante que engaña a otra persona en una falsa colusión podría obtener el 100% de la ganancia, por lo que habría aún más sospechas para unirse. una colusión que no es demostrable criptográficamente.
Ahora, ¿cómo funciona esto en el caso lineal? Supongamos que los usuarios están votando por el precio BTC/USD, por lo que no deben proporcionar una opción entre A y B, sino un valor escalar. La solución perezosa es simplemente aplicar el enfoque binario en paralelo a cada dígito binario del precio; sin embargo, una solución alternativa son las apuestas de rango. Los usuarios pueden hacer apuestas de la forma “Estoy seguro de que esta persona votará entre X e Y con mayor probabilidad que la persona promedio”; De esta manera, es probable que revelar a cualquier otra persona, aunque sea aproximadamente, qué valor va a votarle sea costoso.
Problemas
¿Cuáles son las debilidades del esquema? Quizás el más grande es que abre una oportunidad para “dolor de segundo orden” a otros jugadores: aunque uno no puede, en la expectativa, obligar a otros jugadores a perder dinero con este esquema, ciertamente puede exponerlos al riesgo apostando contra ellos. Por lo tanto, puede abrir oportunidades para el chantaje: “haz lo que yo quiero o te obligaré a jugar conmigo”. Dicho esto, este ataque se produce a costa de que el propio atacante esté sujeto al riesgo.
La forma más sencilla de mitigar esto es limitar la cantidad que se puede apostar, y tal vez incluso limitarla en proporción a la cantidad apostada. Es decir, si P = 0,1, permite apuestas de hasta $1 diciendo “Estoy seguro de que esta persona votará X con más de 0,11 de probabilidad”, apuestas de hasta $2 diciendo “Estoy seguro de que esta persona votará X con más de 0,12 probabilidad”, etc. (los usuarios matemáticamente avanzados pueden notar que los dispositivos como las reglas de puntuación de mercado logarítmicas son buenas formas de implementar esta funcionalidad de manera eficiente); en este caso, la cantidad de dinero que puede extraer de alguien será cuadráticamente proporcional al nivel de información privada que tenga y, a la larga, se garantiza que realizar grandes cantidades de duelo le costará dinero al atacante, y no solo riesgo.
La segunda es que si se sabe que los usuarios usan múltiples fuentes de información particulares, particularmente en cuestiones más subjetivas como “votar sobre el precio del token A/token B” y no solo eventos binarios, entonces esos usuarios serán explotables; por ejemplo, si sabe que algunos usuarios tienen un historial de escuchar Bitstamp y algunos Bitfinex para obtener su información de voto, tan pronto como obtenga los últimos feeds de ambos intercambios, puede extraer de manera probabilística cierta cantidad de dinero de un participante basado en su estimación de qué intercambio están escuchando. Por lo tanto, sigue siendo un problema de investigación ver exactamente cómo responderían los usuarios en ese caso.
Tenga en cuenta que tales eventos son un tema complicado en cualquier caso; Es muy probable que surjan modos de falla, como que todos se centralicen en un intercambio en particular, incluso en esquemas Sztorcianos simples sin este tipo de duelo probabilístico. Tal vez un esquema de varios niveles con un “tribunal de apelaciones” de segundo nivel de votación en la parte superior que se invoque tan raramente que los efectos de centralización nunca terminen teniendo lugar pueda mitigar el problema, pero sigue siendo una cuestión muy empírica.