He intentado mantenerme en p2pool durante mucho tiempo con bastante potencia esperando que esa teoría fuese correcta y siento decirte que no es así.
La teoría es correcta porque en el protocolo se definió así y esto se hizo para impedir que mineros con gran capacidad de procesamiento dejaran fuera a mineros con pocos recursos. Ojo, no estoy diciendo que lo que tú has observado vía experiencia sea falso sino que la conclusión a la que llegas para justificar dicho observable es errónea y que es que la probabilidad de hallar un bloque no aumenta linealmente con la potencia de hasheo (es decir, la probabilidad de hallar un bloque dependería de la potencia de cómputo elevada a algún factor mayor que 1). El porqué un pool grande tiene cierta ventaja respecto a uno pequeño está en otro sitio, más adelante haré una reflexión personal sobre dónde se puede encontrar dicha ventaja.
De hecho, de ser así nadie necesitaría un pool, te podrías poner en solo mining y quedarte los 25BTC para ti, la realidad te demuestra que jamas resolverás un bloque al igual que los pools pequeños resuelven muchos menos bloques que los grandes en una proporción menor que la diferencia en su potencia de hash.
Y nadie necesita un pool. La cuestión es que este modelo no es práctico cuando la dificultad es muy alta. Nadie estará dispuesto a esperar diez años para tener un percentil del 95 % de resolción de un bloque, la gente preferirá pagar una comisión a cambio de que le ingresen diariamente la proporción que le correspondería si los bloques se distribuyeran de forma continua y no puntualmente como ocurre en la realidad. El modelo no cambia porque la difultad sea alta o baja, cambia la forma de obtener la recompensa. Si a ti te obligaran a cobrar tu salario cada 10 años seguramente te integrarías en algún tipo de cámara asociativa que fuera recogiendo los pagos de sus miembros, repartiéndolos de forma más frecuente en el tiempo y de forma proporcional a los futuros ingresos que aportará cada socio individualmente. Ésta cámara de compensación se llevaría una comisión por gestionar dichos pagos y es lo que hace un pool.
Pero vamos a ver, poniéndonos en ese mismo caso que comentas un poco mas desarrollado para que se adapte mejor a la realidad, si hay un pool con el 50% de la red y 10 millones mineros dentro de el y el otro 50% de la red es de 10 millones de mineros individuales aquí no puedes aplicar la estadística a la que haces referencia en ningún caso.
Tienes que entender que eso es indiferente. El evento aleatorio sobre el que estamos debatiendo es el resultado de una función hash sobre un valor numérico que nos propocionan deteminadas variables obtenidas del bloque anterior válido, un contador (nonce), etc. y puesto que el resultado que va a proporcionar dicha función hash no es predecible lo consideramos aleatorio por lo que no nos queda más remedio que hacer pruebas de trabajo, es decir, ensayo y error. De modo que me da igual que un minero disponga de un chip que pueda realizar el cálculo de mil millones de hash en un segundo o que disponga de cien tarjetas que resuelvan cada una 10 M de funciones hash en un segundo, en los dos casos va a resolver el mísmo número de bloques a largo plazo. Esto es así porque estadísticamente son eventos independientes, la resolución de una función hash no determina ni influye en el resultado de la siguiente función hash. Estadísticamente es totalmente igual al caso de tirar un millón de dados o tirar uno solo un millón de veces. El resultado de cada tirada de un dado es independiente del resultado de otro dado o de la tirada anterior.
Según el funcionamiento de la red las probabilidades de resolver un bloque son en parte suerte, puedes encontrar el resultado en el primer hash pero no nos engañemos, a mayor potencia trabajando en el mismo bloque (en este caso el 50% de la red frente a una 10 millonésima parte del otro 50%), a la larga resolverá muchas mas el que tiene el 50% de la red frente al que tiene la fracción.
Edito: hay que recordar que todos los mineros reciben los bloques en los que trabajar a la misma vez y el primero que lo resuelva es el único que cobra la recompensa, por eso mismo la mayor potencia de calculo de la red tiene mas probabilidades quitando el factor suerte.
Utilizando el ejemplo de los dados. Si tú eres capaz de tirar muchos dados a la vez vas a obtener más seises que alguien que sólo puede tirar unos pocos pero lo que no vas a mejorar es tu porcentaje de seises, respecto a tus cincos o tus treses, por tirar más cantidad de dados y que será de 1/6 para ti que tiras muchos como para el que sólo puede tirar unos pocos. Lo que ocurre es que el resultado real se aproximará a 1/6, tanto más, cuanto mayor número de dados tires o de tiradas hagas.
Con esto creo dejar claro que una mayor potencia de hasheo no supone que la suerte beneficie más a su poseedor con respecto a los que no cuentan con tanta potencia.
Ahora bien, tenemos tu experiencia, que por supuesto no discuto, de que la minería P2Pool es menos rentable que la minería a través de un gran pool tipo BTCGuild a pesar de las comisiones ―lo cual es una pena por cierto―, ¿cómo podemos explicar dicha discrepancia si admitimos como cierto lo anterior?
No conozco cómo está implementado el software para hacer minería a través de P2Pool pero, al menos, se me ocurre una forma en la que un gran pool podría obtener ventaja respecto a la minería distribuida. Volvamos al ejemplo de los dados. Tenemos dados blancos y una dificultad de, pongamos, 10000 que quiere decir en nuestro caso que tendríamos que tirar de media 10000 veces el dado para obtener un acierto (bloque válido); suponemos que nuestro dado tiene un millón de caras numeradas desde el 1 hasta el millón. Esto implica que la red nos exigiría obtener en la tirada un valor igual o menor a 100. Habrá gente que podrá tirar de una vez 100 dados (porque los ha comprado o fabricado), habrá otros que podrán tirar sólo dos o tres y habrá quienes sean capaces de tirar el dado cinco veces en el tiempo que otros lo tiran una vez. El asunto es que el primero que obtiene en una tirada un valor igual o inferior a 100 se lleva 25 monedas (antes 50
). Una vez que ocurre esto el ganador reclama el premio y cambia sus dados blancos por otros iguales pero azules, la dificultad sigue en diez mil por lo que para ganar de nuevo ha de obtener en algún dado, azul ahora, un valor igual o inferior a 100. Entre tanto, los rivales que tiene próximos a él observan que ha cambido el color de los dados y se apresuran a sustituir los suyos blancos por otros azules, mientras, en los extremos de la sala otros rivales más alejados continúan tirando dados blancos hasta que se den cuenta de que sus rivales cercanos cambian sus dados blancos por azules. Durante el tiempo en que transcurre esto, el ganador de las últimas 25 monedas lleva realizadas unas cuantas tiradas con los dados azules.
¿Está claro a dónde quiero llegar, no? ;-)
El caso es que tenemos muchos tiradores que solamente tienen juegos de 10 dados o menos y como casi nunca son los primeros en obtener una tirada menor o igual a 100 (en realidad bastantes de los premios se los lleva alguien que tira con pocos dados pero siempre son otros), deciden asociarse para hacer un fondo común (exactamente igual que en el ejemplo de percibir el salario cada diez años) y cobrar cada uno según el número de dados con los que cuenta aunque no haya acertado ninguna tirada. El que se encarga de gestionar el fondo se queda una parte de las ganancias ya que no puede hacer eso y estar tirando dados. Además al promotor del fondo se le ocurre una cosa y diseña un sistema tal que, cuando uno de sus socios realiza una tirada ganadora u observa que algún vecino la ha realizado y abre la caja de los dados del nuevo color, el sistema automático abre las cajas de los dados del siguiente color de todos sus asociados indicando que han de cambiar de dados puesto que ha habido una tirada ganadora; de esta forma, incluso el socio más apartado que tienen, que se halla en un rincón de la sala y que sólo tira con un dado se entera de forma casi simultánea al primero de los socios que cambia de color de dados, él comienza a tirar su único dado del nuevo color mientras un rival importante que no tiene lejos en la sala continua haciendo tiradas de 200 dados pero con el color antiguo. Es curioso, sin embargo resulta que este gremio que mayoritariamente es de tiradores con pocos dados pero al que se han asociado la mayoría de los que disponen de pocas unidades, ahora es el jugador que más cantidad de tiradas inferiores o iguales a 100 obtiene, y aunque sus socios están perdiendo un porcentaje de sus ganancias para mantener la administración del sistema de alertas y la gestión del fondo les resulta beneficioso el acuerdo.
Bueno, después de la parábola
, pienso que dejo evidente la idea de que el problema de minar solo no es que la función hash no sea aleatoria y no prime por igual a todos en función del esfuerzo que aportan a la red, sino que también es fundamental contar con el aviso temprano del hallazgo de un nuevo bloque, lo cual parece que se puede explotar más eficazmente cuanto mayor sea el pool y que pienso que penaliza claramente al P2Pool. Puede que haya, a su vez, otros factores en la implementación de la minería P2Pool o del SoloMining que los penalicen a mayores respecto a las grandes cooperativas de mineros. Para que esto no ocurriera todos los mineros deberían comenzar simultáneamente el minado de cada nuevo bloque, lo cual no es posible ya que hasta la teoría de la relatividad lo impide ―aquellos que conozcan la teoría lo sabrán― puesto que en sistemas relativistas la simultaneidad temporal se pierde; supongo que los efectos relativistas en la transmisión de datos en redes informáticas serán despreciables porque aun siendo dicha transmisión muy rápida para nosotros, será muy lenta en términos relativistas. No obstante, tendría que echar cuentas para asegurarlo porque puede que no sea tan despreciable.
Espero haber hecho el "tocho" ameno. Se agradecen μ
BTC.