¿Se podría contrarrestar la centralización de la minería comprobando si el nodo se conecta a muchos ASIC en lugar de a uno solo?

En un grupo de minería, muchos ASIC y GPU/CPU de todo el mundo se conectan al nodo del grupo. ¿Es posible obligar al software cliente de cada nodo a verificar si un nodo está conectado a una sola unidad de computación, antes de que se permita la extracción del nodo? ¿O me estoy perdiendo algo sobre cómo funciona el nodo del grupo de minería?

Si tengo razón, algunos dirían que no podemos saber si el cliente o el hardware están manipulados de tal manera que el cliente siempre dirá que solo hay una unidad informática. ¿Qué tal poner el cliente y el hardware en un entorno de ejecución de confianza (TEE) para que no se pueda manipular?

Respuestas (2)

No, esto no es posible. Se debe permitir que los mineros se unan a la red sin permiso, porque de lo contrario se vuelve necesaria la posición de un 'tomador de decisiones'. Esto no significa necesariamente que el tomador de decisiones sea solo un individuo (o grupo de individuos, etc.), pero en cualquier caso presenta una barrera adicional de entrada a la red.

Considere: si yo fuera un minero, ¿por qué permitiría que mi nodo 'dara permiso' a cualquier otro minero para unirse a la red? Al no permitir que nadie más se una, tendría menos competencia al minar. Así que sería inteligente hacer todo lo posible para evitar que otros se unan.

Además, ¿cómo llega la red a un consenso sobre qué nodos pueden minar? Este es un problema no trivial, de hecho, es la minería en sí misma lo que permite que la red mantenga el consenso. Necesitaría crear un sistema completamente nuevo y una capa de consenso que precedería al acto de minería.

También vale la pena mencionar: incluso si fuera posible, ejecutar un nodo es económico, por lo que no se puede impedir que una sola entidad ejecute muchos nodos para ejecutar muchos dispositivos de hardware de minería.

Como mencionó, tampoco hay forma de obligar a un usuario a usar una implementación de software específica. Un entorno de ejecución confiable no es una solución en este caso: forzar algo así centralizaría la decisión de lo que se ejecuta dentro del TEE, lo que contrasta fuertemente con las criptomonedas de naturaleza abierta y sin permisos. Sin estas propiedades, se destruye la propuesta de valor de una criptomoneda como bitcoin. ¿Qué sucede si el responsable de la toma de decisiones o el fabricante del hardware se ven comprometidos? Situaciones como esa presentan enormes riesgos existenciales para la red.

¿Qué tal poner el cliente y el hardware en un entorno de ejecución de confianza (TEE) para que no se pueda manipular?

Esa es básicamente la única forma en que podría lograr esto. Pero significa que el código tendría que estar firmado y necesitaría alguna autoridad centralizada para hacer la firma. Esa autoridad tendría control total sobre cómo opera Bitcoin.

Sin embargo, uno de los principales objetivos de diseño de Bitcoin era evitar la centralización, de modo que las decisiones sobre cómo funciona la moneda se tomen por consenso, no por una sola autoridad. (Puede ver un texto justo en el bloque de génesis que expresa el escepticismo de Satoshi sobre los bancos centrales). Entonces, podría diseñar una moneda que solo se pueda ejecutar en TEE, y podría tener las restricciones de minería deseadas, pero creo que encontraría que la mayor parte de la base de usuarios actual de Bitcoin no tendría interés en usar dicha moneda.

Hola, no entiendo la parte de firma de código. ¿Qué código necesita ser firmado por la autoridad?
@Danny: Supongo que depende del tipo de TEE que tengas en mente. Una posibilidad es el hardware que solo ejecutará código si tiene una firma digital válida creada por una clave específica (o conjunto de claves). Luego, quien tenga esas claves puede decidir qué software puede ejecutar el dispositivo, y la pregunta es quién las tiene. También podría tener un dispositivo en el que el software esté "grabado" y no se pueda cambiar; luego, debe decidir quién fabrica los dispositivos.