¿Que es minar criptomonedas?
26-jun-2017 17:45
#7
| Olvidate, en ESPAÑA no es viable, a no ser que estes enchufado al alumbrado municipal. |
26-jun-2017 17:46
#8
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro |
Editado: 26-jun-2017 17:52 -
26-jun-2017 17:47
#9
|
Minar criptomonedas, como bitcoin por ejemplo, es descifrar un código matemático, cuando lo descifrar, en el caso del bitcoin, te dan un bloque, que son 50 bitcoins. Es un tema bastante interesante, aunque muy poco rentable. Hay peña que en su momento supone ver el potencial de esto y se compraron un porrón de tarjetas gráficas ATI que son las que mejor funcionan para esto y tienen habitaciones llenas de las tarjetas gráficas minando 24/7. Shur, si quieres informarte es muy interesante, pero ni de coña pienses en minar, un saludo. |
26-jun-2017 17:49
#10
| Ayudar con calculos computacionales costosos para gestionar transacciones, recibiendo cierta recompensa por ese trabajo q hacer, pero como te dicen...no es rentable hoy en dia |
26-jun-2017 17:54
#11
|
Minar criptomonedas, como bitcoin por ejemplo, es descifrar un código matemático, cuando lo descifrar, en el caso del bitcoin, te dan un bloque, que son 50 bitcoins. Es un tema bastante interesante, aunque muy poco rentable. Hay peña que en su momento supone ver el potencial de esto y se compraron un porrón de tarjetas gráficas ATI que son las que mejor funcionan para esto y tienen habitaciones llenas de las tarjetas gráficas minando 24/7.
Shur, si quieres informarte es muy interesante, pero ni de coña pienses en minar, un saludo. Los bitcoins sí son difíciles pero si te vas a otra moneda como Ethereum puedes obtener ingresos fácilmente con una tarjeta gráfica. Por esto mismo en EEUU no tienen stock de ninguna de las tarjetas más vendidas, porque la gente se está volviendo loca a minar |
Editado: 26-jun-2017 18:09 -
26-jun-2017 17:55
#12
| En el mismo día nunca lo es. Solo si su precio varía. Bueno salvo que te regalen electricidad pero... Cómo q no xD. |
26-jun-2017 17:56
#13
| Supongo que si, acabo de ver algunos vídeos de ethereum y otra más que no me acuerdo del nombre pero he visto un vídeo de un hombre español que se ha comprado 4 putas 480 para acabar diciendo que gana $8 al día. No se yo si es muy worth it. |
26-jun-2017 17:57
#14
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema
Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro |
26-jun-2017 18:21
#15
|
Ahí estás equivocado.
Los bitcoins sí son difíciles pero si te vas a otra moneda como Ethereum puedes obtener ingresos fácilmente con una tarjeta gráfica. Por esto mismo en EEUU no tienen stock de ninguna de las tarjetas más vendidas, porque la gente se está volviendo loca a minar Os digo lo mismo que al de arriba |
26-jun-2017 18:36
#16
|
Sí y te lo demuestro Por ejemplo mi PC Tengo una GTX 970 (18,5 MH/s) Mi tarjeta consume 145W Supongamos que mi ordenador en total consume 438W, lo cual ni de coña es eso porque la CPU no está al 100% todo el rato, aún así lo pongo Precio de la luz, pongamos que 0,13 €/kWh
|
Editado: 26-jun-2017 18:39 -
26-jun-2017 18:47
#17
| Para sacar ese rendimiento, imagino que la tarjeta tiene que ir a fuego, no? 24/7/365 y sin usar el ordenador demasiado con nada mas |
26-jun-2017 18:49
#18
| Si pero puedes usar el ordenador normalmente, excepto para jugar y demás programas que tiren mucho de la gráfica |
26-jun-2017 18:58
#20
|
Mientras tengas buenas temperaturas sí Eso requiere tener una caja con buen flujo de aire |
26-jun-2017 19:34
#22
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema
Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro |
05-sep-2017 16:33
#24
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema
Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro Lo que me falta siempre sobre este tema es: -Cuál es el software? -A qué se conecta? -Qué minar?? -A dónde va lo minado? -Cómo lo convierto en Leuros? Quiero hacer una prueba con una gtx680, a ver qué tal. Gracias Shur. |
05-sep-2017 16:35
#25
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema
Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro Me cago en la luna no he entendido nada. |
05-sep-2017 20:42
#26
|
-Cuál es el software? Depende de qué moneda mines. En caso del Ethereum el programa se llama Ethminer. También hay otros como Claymore o qtminer -A qué se conecta? A un servidor de una pool o a una dirección local si minas solo -Qué minar?? https://whattomine.com -A dónde va lo minado? Directamente a tu cartera virtual. -Cómo lo convierto en Leuros? En un exchange, son páginas de compra venta de monedas virtuales. Por ejemplo BlockChain.info te permite comprar y vender bitcoins |
05-sep-2017 23:03
#27
|
-Cuál es el software? Depende de qué moneda mines. En caso del Ethereum el programa se llama Ethminer. También hay otros como Claymore o qtminer
-A qué se conecta? A un servidor de una pool o a una dirección local si minas solo -Qué minar?? https://whattomine.com -A dónde va lo minado? Directamente a tu cartera virtual. -Cómo lo convierto en Leuros? En un exchange, son páginas de compra venta de monedas virtuales. Por ejemplo BlockChain.info te permite comprar y vender bitcoins Tengo entendido que es mejor la pool... pero cómo y por qué? Mejor en local? Cuál es tu recomendación? Gracias! |
06-sep-2017 22:47
#29
|
Copio y pego de otro hilo al que respondí la misma pregunta. Responde a la minería de bitcoins específicamente, no a la de las croptomonedas en general (dónde hay otras como ethereum que son más fáciles de minar), pero creo que te servirá para entender el sistema
Originalmente, con cada nuevo bloque introduces 50 bitcoins en el sistema. Esta cantidad se reduce a la mitad cada 210.000 bloques, si haces el sumatorio de las series geométricas te da el número de bitcoins totales que pueden existir. ![]() A partir de ahí, ¿cómo se obtienen los bitcoins? Pues minando Bitcoins! ¿Qué es minar? Es utilizar la potencia de tu ordenador para encontrar hashes criptográficos que cumplan ciertas condiciones, para hacer esta computación se suelen utilizar las tarjetas gráficas, pues están especializadas en ese tipo de operaciones matemáticas. En realidad al minar estás buscando el hash del siguiente bloque. También al minar estás ayudando a validar transacciones. ¿Qué es un hash? Es el resultado de una función matemática que devuelve cadenas de longitud fija. Nótese que antes de aplicar la función, la entrada de datos puede tener cualquier longitud, pero no en la salida. Una vez que tienes el hash, y esto es importante, NO PUEDES saber cuál fue la entrada! Es decir, no hay una función que haga lo contrario, y no existe, o al menos el ser humano no ha encontrado una manera de revertir el cambio. ¿Para qué se utilizan los hashes? Por ejemplo, para acceder a cualquier página web con tu usuario y contraseña, o para acceder a tu ordenador con tu contraseña. ¿Sabías que en realidad ni Windows, ni Forocoches saben tus contraseñas de acceso? Ni siquiera Ilitri puede saber tu contraseña de FC. ¿Entonces cómo se comprueba que tu contraseña es correcta cuando entras en FC? Cuando te registras en FC tu contraseña nunca se envía al servidor, nunca se guarda en una base de datos. Lo que se envía y guarda es el HASH de tu contraseña. Cuando vas a entrar en FC, metes tu contraseña, se calcula el hash de la misma y se compara con el que hay en la base de datos, si coinciden, la contraseña es correcta. Esto se hace por seguridad, ¿por qué? Pues porque como antes he dicho, las funciones matemáticas que generan los hashes no se pueden revertir, así que de esta manera puedes autentificarte en una página sin que ni siquiera esa página sepa tu contraseña. Es decir, lo haces sin fiarte de nadie. Esto se consigue también con el Bitcoin! Las transacciones son validadas de tal manera que es imposible que aparezca dinero de donde no lo hay, lo veremos en las próximas respuestas. También estos hashes se utilizan para comprobar que ciertos datos que has descargado no han sido modificados. Por ejemplo, imaginemos que yo te envío este texto: Código:
Menudo hijo de puta, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
b5573808789ffa6e2c68e9e45663dd24 Pero imaginemos que alguien se cuela en el sistema y modifica el mensaje anterior por este: Código:
Menudo cabrón, tienes un cuerpazo del copón. De gordo nada, tu estás fuerte. Menudas espaldas tienes, hijo de la gran puta. Olvídate de adelgazar, potencia ese físico tan espectacular que tienes, hijo de una perra sarnosa. Qué puta envidia me das! Código:
35bb526348c2787b3ff8df44387505a3 De hecho solo he cambiado una palabra, y el resultado es totalmente distinto. ¿Pero y no puede haber dos mensajes distintos que den el mismo hash? Pues sí... y no. En teoría sí, pues a las funciones hash le puedes meter un número infinito de entradas, y sin embargo, el número de posibles salidas es finito, limitado por el alfabeto utilizado y la longitud de las cadenas. Si esto ocurre se dice que ha habido una colisión de hashes Pero es extremadamente difícil que esto ocurra. La probabilidad de que esto ocurra es de 2^128, es decir, 1 entre 340282366920938463463374607431768211456 veces. De todas formas existe la paradoja del cumpleaños, lo que quiere decir que para tener un 50% de posibilidades de que dos hashes coincidan necesitas 2^64 hashes. Esto quiere decir que, de media, necesitarías procesar 6 billones de archivos por segundo durante 100 años. Casi nada, y este cálculo está hecho con MD5 que es una de las funciones menos seguras. Y de todas formas, ya ha ocurrido con el MD5. En cuánto se detectan dos colisiones, automáticamente la función se considera vulnerable y no se debería utilizar. Como curiosidad, estas dos imágenes generan el mismo hash: ![]() ![]() ¿Ah, pero también funciona con imágenes? Pues claro, funciona con cualquier archivo, en realidad una imagen no es más que una serie de dígitos, puedes comprobarlo si abres una imagen con el bloc de notas ¿Existe sólo una función que calcula los hashes? En realidad no, existen muchos algoritmos. Entre los más populares están MD5, que devuelve cadenas de 32 dígitos. El ejemplo del mensaje anterior está hecho con MD5. SHA-256, que devuelve cadenas de 64 dígitos. Whirlpool, devuelve cadenas de 128 dígitos. La probabilidad de que coincidan dos hashes en estas funciones es aún más minúsculo, porque el número de posibles salidas es mayor Bueno, volvamos al grano ¿Qué condiciones tiene que cumplir el hash criptográfico del bloque para darse como válido? Todas las personas que minan bitcoins tienen un Target en común, en este caso es: Código:
00000000000000000183f0e14f7d064512eb5140a7b1612c705acb0c3596d36b El objetivo es generar un bloque, hacer el hash a este bloque y conseguir que este hash valga menos que el Target. En la siguiente pregunta daré más detalles sobre esto. El caso es que si lo consigues, obtienes el premio. Actualmente el premio es 12,5 Bitcoins Como he dicho al principio del mensaje, cada 210.000 bloques conseguidos el premio se reduce a la mitad. Esto es así para limitar el número de bitcoins posibles en circulación, cuyo resultado ya puse más arriba. De esta manera, no se puede sacar dinero de la nada, si no que tienes que aportar potencia computacional al sistema, y a cambio este te da el premio. Como ya he dicho, minando no sólo estás buscando por el hash, si no que también estás validando las transacciones que se han realizado. Al final, lo que estamos creando es un sistema descentralizado, y dividido entre todos los ordenadores que están minando bitcoins. Tú mismo puedes minar bitcoins con tu ordenador ¿Ah sí? ¿Y cuán difícil es minar bitcoins? Pues ahora mismo es muy diíficil, ¿por qué? Volvamos al target de la pregunta anterior, como vimos tenía 17 ceros al incio. Esto es en 2017 Si nos vamos a 2013, el target empezaba con 13 ceros, es decir, era un número bastante mayor que el actual ¿Esto que quiere decir? Si recordamos la pregunta anterior, el objetivo era buscar un hash menor al target. Obtener un hash que empiece por 13 ceros es mucho más fácil que obtener uno que empiece por 17 ceros. Es decir, ¡la dificultad para minar un bitcoin aumenta! Y además aumenta muchísimo: ![]() Lo que deducimos de esto es que al aumentar la dificultad, necesitamos mucha más potencia ahora que en 2013 para obtener los mismos resultados. Esto ha aumentado tanto que hay gente que literalmente tiene naves enteras con ordenadores minando bitcoins: Al final lo que tenemos es una cantidad brutal de potencia computacional detrás de los bitcoins que hacen sostener el sistema, pues como he dicho al minar también validamos las transacciones, por lo que entre todos lo hacemos más seguro. En 2009 se minaban 7200 Bitcoins por día, hoy son 1800, y con el paso de los años todo irá bajando ![]() ¿Pero al final todo esto no hará que no salga rentable minar, y la gente deje de hacerlo, provocando que el sistema se desmorone? Pues no! Porque las transacciones llevan una comisión asociada, y esta comisión va para el que mina el bloque que incluye tu transacción. Esta comisión está basada en el tamaño de la transacción y en la edad de las monedas que envías en la misma. En teoría tú puedes elegir que comisión lleva tu transacción, pero si es demasiado pequeña nadie la validará. Las nuevas versiones de las carteras generan automáticamente una comisión suficiente como para que sea validada sin problemas. A mayor comisión, más rapidez en la validación ¿Puedes explicarme exactamente cómo funciona el sistema para encontrar bloques? La estructura de un bloque es la siguiente: ![]() El último campo (Nonce) es el que cambiará cada vez que probemos. Más o menos funciona así, todos estos campos se ponen unos detrás de otros, por ejemplo así: Código:
header_hex = ("01000000" +
"81cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000" +
"e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122b" +
"c7f5d74d" +
"f2b9441a" +
"0")
El software lo convierte de hexadecimal a binario y le hace un hash usando SHA-256. Esto le da un resultado hexadecimal, que vuelve a convertir a binario, y vuelve a hacer el hash SHA-256 otra vez. Este último resultado es el hash que tiene que ser menor que el target para poder ganar el premio. En este caso supongamos que nos ha dado: Código:
8b9b994dcf57f8f90194d82e234b72ac Código:
5b7ce5bcc07a2822f227fcae7792fd90 ... Con Nonce=16 Código:
03b80c7a34b060b33dd8fbbece79cee3 ... Con Nonce=105 Código:
2ad5d5a5eabd807533748111c7b76a5f ... Con Nonce=208 Código:
0055e55df5758517c9bed0981b52ce4a Así continuaremos hasta que tengamos un hash resultado menor que el target, en ese caso hemos ganado el premio. No funciona exactamente así, en mi ejemplo lo he simplificado y lo he hecho con MD5 no con SHA-256, pero el Nonce está en hexadecimal, no es decimal. Como ves, necesitamos un hash muy específico, y entre más ceros tenga el Target más difícil será encontrar un hash adecuado. Una tarjeta gráfica moderna puede comprobar cientos de millones de veces por segundo, y actualmente con una sola no te da ni para comprar pipas. Joder, ¿y por qué es tan complicado todo esto? ¿Por qué se hace tan difícil encontrar este hash? Pues porque de esta manera, la dificultad para encontrarlo va aumentando con el tiempo. ¿Por qué? Para limitar el número de posibles monedas en circulación. Cada vez se irá haciendo más y más difícil. Encontrar el último bloque que te de las últimas monedas es prácticamente imposible. (Bueno, estoy exagerando, pues se calcula que ocurrirá en el año 2140) ¿Qué conseguimos entonces limitando el número de monedas? ¿Por qué no se crean más monedas y ya? Pues para generar confianza en la misma! Si un país se pone a imprimir más billetes lo que conseguimos es inflacción y devaluación de la moneda. Este es otro tema explicado aquí: https://www.elblogsalmon.com/histori...mir-mas-dinero ¿Cuál es el problema? Que una persona que tenga mayor potencia computacional que tú conseguirá el bloque antes, todo tu trabajo no habrá valido para nada. Por eso normalmente se mina en las llamadas 'pools'. Son comunidades en las que este trabajo se divide, y te dan un dinero proporcional al trabajo computacional que hayas realizado. ¿Y respecto a la validación de transacciones, ¿cómo se hace? Esto también lo hace el software. Funciona más o menos de esta manera. Imagina que estáis en un parque tú y tu amiga ![]() Ella tiene una (1) manzana. Y ella te la da a tí. Ahora tu amiga tiene 0 manzanas, y tu tienes una (1). ¿Es fácil verdad? Os habéis pasado una manzana que físicamente existe. Lo has visto, lo puedes tocar, y ver. No necesitas a nadie más que te confirme que la manzana ha pasado de una persona a la otra. Ahora imagínate que tu amiga te pasa esta manzana forocochera: ![]() Esta manzana es una imagen digital, no existe físicamente. ¿Cómo sabes ahora si ella te ha dado sólo a ti esta manzana digital? ¿Cómo sabes que no se la ha enviado al tío Paco también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira. Puede que ella tenga una copia de esa misma manzana.Aunque bueno, no es tanto problema ¿no? Es sólo una manzana. No pasa nada, y además te la ha enviado tu amiga, te puedes fiar. ¿Pero qué pasa cuando en vez de manzanas, tratamos dinero digital? Y además, hacemos intercambios con desconocidos de los que no podemos fiarnos. El sistema Bitcoin no puede admitir que una moneda sea duplicada, por lo tanto requiere que todos los intercambios sean verificados por los mineros. ¿Cuál es la solución entonces? ¡Utilizamos un libro de cuentas! Un libro de cuentas que todo el mundo pueda ver! Así sabemos que la manzana forocochera ha pasado a ser tuya, y por lo tanto, tu amiga no la podrá utilizar de nuevo. En caso de que intente enviársela a otra persona, esta verá en el libro de cuentas que es tuya, y no la aceptará. En este caso este libro de cuentas será digital, pero al fin y al cabo tiene que estar en algún sitio. Supongamos que entonces le decimos a Ilitri que lleve el libro de cuentas de la manzana forocochera. Entonces aquí hay un problema: ¿Cómo sabemos que Ilitri no nos va a trolear y va a escribir en el libro que la manzana es suya? No lo podemos saber ¿Cuál es la solución a este nuevo problema? Le damos este libro a todos los forococheros! Así, este libro no estará solo en el servidor de Ilitri, si no que está en todos nuestros ordenadores. Así, cuando tu amiga te de la manzana, le dirá a todo el mundo: ¡Eh esta manzana, que era mía , pasa a ser de mi amigo !No se puede hacer trampas! Es imposible! Todo el mundo ha visto y ha apuntado que ahora la manzana es tuya ![]() Además ahora Ilitri no puede trolearnos porque su libro no cuadrará con el de los demás. De todas formas como los forococheros somos unos vagos, no podemos estar seguros de que todo el mundo vaya escribiendo todas las transacciones en el libro, así que por el simple hecho de estar actualizándolo, le damos a los forococheros manzanas gratis. (la comisión de la transacción, ¿recuerdas?) Con el Bitcoin pasa igual, tenemos un sistema enorme de libros de cuentas públicos sincronizándose continuamente, así no hay manera de que nadie pueda hacer trampas. Puedes ver el libro de cuentas en directo en https://blockexplorer.com/ dónde aparecerán las últimas transacciones Y esto ha sido todo, si tienes alguna duda, puedes preguntarme. Espero que te haya quedado claro
|
06-sep-2017 22:52
#30
|
minar bitcoins lo hacen con hardware dedicado en grandes instalaciones, los que tienen 2,3 o 10 graficas potentes minan otras cryptodivisas dependiendo el dia, la que mas alto valr tenga, y la cambian a btc al momento. por hacerte una idea con una gtx970 puedes producir 1€ al dia minando alts, pero igual gastas mas luz |






y tu amiga 

también? A lo mejor te está engañando, pues te puede decir que te la ha enviado sólo a tí, y puede que sea mentira.
Puede que ella tenga una copia de esa misma manzana.