Hola.
Por lo que creo entender, corríjanme si no es cierto, la red suelta un bloque a resolver, un pool o un p2pool (recordar que esto era la forma originaria de minar para evitar que alguien tenga el 51% de minado de la red y así hacer un ataque a la red), pilla el bloque y busca el resultado, si otro pool va a buscar otro bloque y se da la circunstancia que no se género otro bloque nuevo por la red el cual es aprox cada 10 minutos y en el que se incluyen las transacciones anexas a la cadena de bloques a través de la minería, entonces entonces le da el mismo, y así 2 o más pool tratan de encontrar la solución al mismo bloque y "luchar" por esquíen lo resuelven antes.
Aclaro esto porque al leerlo me ha sonado a la red como un ente inmaterial que cuando se encuentra un bloque va y suelta otro para que las pools se peleen entre ellas. El bloque como entidad no lo da la red el bloque lo da la pool o cliente que mina en solo, publicando a la red "este es el bloque que yo propongo, en base a tal información...., incluye estas transacciones, tiene este hash, etc "
Creo que todos sabemos que esto de minar se basa en la aleatoriedad, nuestros mineros calculan aleatoriamente hashes y ese hash tiene que cumplir unos requisitos en base a unos datos de trabajo que la pool o el cliente bitcoin dieron al minero.
O sea que la pool coje info del bloque sobre el que basa su trabajo (ultimo resuelto) le va añadiendo las transacciones (los soft de pools suelen dar prioridad a las que tienen comisiones), sobre toda esa información y algo más es con lo que se comparan los hashes que el minero devuelve, algunos de estos hashes cumplen los requisitos de ser correcto para la info dada por la pool pero no con la dificultad mínima establecida, esos son los shares que nos pagan las pools, cuando un minero manda un share que es un hash correcto para toda esa información y tiene una dificultad superior a la establecida como mínima por la red entonces es cuando decimos que se ha encontrado un bloque, el soft de la pool se encarga de publicitar a toda la red ese bloque, los mineros se encargan de verificar que todas las transacciones son correctas (no hay doble gasto, ni transacciones fraudulentas, etc) y si para ellos esa respuesta también es correcta entonces ya tenemos bloque nuevo.
El problema de los forks es o bien porque los bloques se han encontrado casi a la vez o porque la información del bloque encontrado no se ha propagado con rapidez por cualquier motivo (si miráis los bloques inválidos en
http://blockchain.info/es/orphaned-blocks el bloque huérfano 250757 se encontró casi dos minutos antes que el que finalmente se adoptó como correcto) y como dice dserrano5 aquí prevalece la cadena más larga, y si alguien aún siguiendo la linea del bloque que se encontró más tarde encuentra un nuevo bloque, al ser esta cadena más larga que la de la otra versión de cadena, hace que finalmente los que minaban en el primer bloque minado un minuto antes dejen de usar ese bloque como base para minar y adopten el otro.
Un saludo