Implícito/Tácito mecanismos en Bitcoin Core revelar Egoísta de Minería de datos

Me estoy refiriendo a la egoísta mina ataque descrito por dos investigadores de la Universidad de Cornell que describir a un "posible" ataque con más bajo que el 51% de hash de energía.

Ahora es interesante saber qué tipo de mecanismos, se implementaron cambios en las nuevas versiones de Bitcoin Core que detectar egoísta de minería de datos, propagar algunas alertas, divulgar sospechoso horquillas etc.?


EDITAR:

Obviamente compañeros de llegar a conocer acerca de los otros compañeros de' progreso en el blockchain a través de mensajes de datos, en particular a través de las actualizaciones a través de inv mensajes. Hay otros tipos de mensajes intercambiados sin el conocimiento del propio nodo - que regalaría los secretos de una larga privado blockchain, en este caso?

+577
SuperFurryToad 25 mar. 2011 23:08:00
15 respuestas

Ciertamente, puede solicitarlo de forma incremental a partir de bitcoind/Bitcoin-Qt usando el getblock y getblockhash Rpc, pero no hay ningún archivo que mantiene con la lista completa.

+951
rahul jain 03 февр. '09 в 4:24

Entiendo que hay un número de diferentes esquemas para el intercambio de recompensas.

Mi pregunta es sobre el bloque de recompensa en sí misma, y cómo es compartida. Si sólo uno de minero (normalmente un grupo) puede encontrar una recompensa, lo que significa que una piscina no recibe una recompensa por cada bloque de procesado. Sin embargo, de alguna manera, el minero está siendo pagado, incluso si no se encuentra el bloqueo.

Son todas las acciones presentadas entre los bloques cuentan? es decir. Si la piscina se encuentra un bloque cada 10 bloques, hacer las acciones de los otros 9 se suman y el bloque entero recompensa a dividir entre todos los trabajos realizados sobre la que se ha encontrado y previamente sin éxito bloques basados en la participación esquema?

+946
kellyfj 13 ene. 2017 4:05:47

Lo mejor que puedo sugerir es que para ofrecer algunos servicios a terceros y recibir el pago en cryptocurrencies.

Si usted tiene alguna habilidad que puede ser "vendido" en el internet, usted debe utilizar esto para intentar ganar algo de crypto dinero. Esto puede variar de codificación para la edición de vídeo, freelance, escribiendo, etc.

+836
Toani 13 dic. 2012 7:50:21

Será incluida en uno de los bloques E, F, G o de otro bloque?

Es probable que ya se incluyó en uno de esos bloques. Si no, puede ser incluido en un bloque después de que.

Necesito volver a enviarlo?

Probablemente no. Si el bloque D o Tx4 fue visto por la red, se debe obtener en un bloque pronto. (Es posible que ya esté en bloques, E, F o G.)

Si sí, ¿puedo pasar las mismas entradas que hice a la hora de crear Tx4?

Sí. Cuando se realiza una reorg, el cliente Bitcoin primera rollos de la chainstate de vuelta al primer antepasado común.

El estándar de cliente Bitcoin en realidad incluye una base de datos con el único propósito de revertir el blockchain de la espalda. (Esto se llama un undofile.)

+816
mfinni 12 ene. 2019 18:56:32

Es Aashish Sharma de Nepal. Me han sido de minería de bitcoins en línea para un par de meses. Quiero, si puedo, los venden en línea por dinero en efectivo o USD en mi cuenta de PayPal. No sé qué puedo hacer para pocos bitcoins. O puedo hacer normal de compras en línea con las pocas monedas? Que me ayude.

+810
eMaX 29 mar. 2016 20:37:06

Que error probablemente significa que usted no ha hecho un git pull o git fetch. Aquellos que son necesarios para que usted puede tirar hacia abajo de la ultima versión del código fuente y las etiquetas, así que usted puede, a continuación, hacer git checkout.

+646
Andrey11 7 ago. 2018 1:21:47

Quiero crear una Cartera para el sitio web, es decir, para cada uno de los usuarios que se registren en el sitio web.

¿Cómo puedo hacer esto.

Cómo transferir las monedas de una cartera a otra cartera

+584
Daniel Matesi 20 feb. 2017 18:15:54

No hay una sola Radeon 8570 enumerados en el 86 kh/s en este litecoin minería comparación de la wiki. Algo es más probable que el mal con el cgminer configuración O su gpu/mem velocidad del reloj de la relación.

Probar otras configuraciones en cgminer primera. Cuando encuentres algo óptimo, intente downclocking su GPU en incrementos de 5 MHz hasta encontrar el mejor hash velocidad.

También, no se olvide de litecoins utilizar el Scrypt algoritmo de hash mientras Bitcoins utilizar el algoritmo SHA256. Una GPU decente le neto de alrededor de 500-700 KH/s, mientras que la minería Scrypt cryptocurrencies, pero 500-700 MH/s, mientras que la minería SHA256 monedas.

+568
Mahmud Rassel 3 jul. 2012 19:22:51

Trate de abrir su directorio de datos y eliminar el archivo .bloqueo

Asegúrese de que Bitcoin es cerrado, mientras que usted está haciendo esto.

+502
Federico Tejeda 26 oct. 2019 12:17:54

Respuesta: Si de verdad es de ladrillo, entonces usted necesita para utilizar su copia de seguridad de esa cartera.

Si usted ha perdido su única copia de su cartera, y mis condolencias. La pérdida de su BTC puede ser considerado como un costo de hacer negocios, a pesar de que el precio de aprender de este error y la instauración de mejores prácticas de seguridad de datos en el futuro.

En tener una copia de seguridad: Dos copias de su cartera presenta más oportunidades para el acceso no autorizado, pero más la seguridad de los datos en términos de protección.

Sería mejor si su cartera de copia de seguridad se almacena en una caja fuerte.

También, para reducir el riesgo, podría ser prudente para tener un master en la cartera (yo uso Coinbase) y un segundo viaje cartera.

Al igual que usted guarde el dinero en el banco, pero sólo llevan una pequeña fracción del total de alrededor en su bolsillo.

Yo, me quedo sólo con Coinbase y de su aplicación. Estos dispositivos son saque de aquí. Pero los datos deben ser protegidos.

+455
user5838939 5 feb. 2012 7:48:01

Hay una parte de la Bitcoin protocolo que no acabo de entender.

Cuando usted realiza una transacción, y pasar el resultado de una transacción anterior para decir 1 BTC, que proporcionan una firma utilizando la clave privada de la coincidencia de la clave pública (o la dirección) que aparece en la salida de la transacción anterior. Mi primera pregunta aquí es ¿qué es exactamente firmado?

En segundo lugar, cuando la transacción es de difusión, lo que impide que un malintencionado de pares para tomar la entrada de mi transacción con la firma, por 1 BTC, y forjar una nueva transacción utilizando la misma entrada a su dirección? Para evitar que, el total de la transacción (incluyendo salidas) tendría que ser firmado, no pude encontrar un documento en el que constará toda la transacción se firmó.

+366
Nice Guy 28 dic. 2014 15:57:28

Tengo una vieja cartera.archivo dat que tengo una copia de seguridad y ya he sustituido la nueva cartera.dat, que no tenía btc en que con la edad, que hace. He probado a introducir el comando para volver a examinar la función para adaptarse a la diferente información de la cartera sin éxito. Qué tengo que hacer esto a través de la QT terminal o a través de la consola de depuración de la línea de comandos? Y se puede hacer esto antes de que el bitcoin core cartera está completamente sincronizado con toda la red? Gracias.

+302
SMD 29 dic. 2010 4:52:05

Así que, después de muchos días he podido resolver este problema. Yo era capaz de enviar la transacción de un cliente (NGN) a otro Cliente que recibió en (USD).

Por otras que probablemente se enfrentará a un problema similar en el futuro, estos son los pasos para resolver este problema.

Paso 1

He creado ofrece para todas las monedas. ver ejemplo de solicitud y de respuesta a continuación

{ el "método": "enviar", "params": [ { "sin conexión": false, "secreto": "snYothV5CFDMpMYStmL5VwMHzxHFr", "fee_mult_max": 1000, "tx_json": { "TakerGets": { "moneda": "EUR", "valor": "0.94", "el emisor": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk" }, "TakerPays": { "moneda": "USD", "valor": "1", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq" }, "Cuenta": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "TransactionType": "OfferCreate", "Precio": "12", "Banderas": "65536" } } ] }

y la respuesta de muestra

{ "resultado": { "engine_result": "tesSUCCESS", "engine_result_code": 0, "engine_result_message": "La transacción fue aplicado. Sólo el final de validación de contabilidad.", "estado": "el éxito", "tx_blob": "1200072200010000240000001764D4838D7EA4C68000000000000000000000000000555344000000000045249D498FF76EF67DACD0958930DB02EE4A9D4465D46165400CE380000000000000000000000000004555520000000000C260B3831882A44608EE81C2F3726AA72D11CA9568400000000000000C732102272E391673B735C9D96435DAFF89F9EA7B4EC285C39643A754848EDE19A6542674473045022100CD7511B302ED7D0C299C0F2C1014EA5AA62F7584B361B940C0E8A98FBA04EDE10220047590E7A678818000B5B221EBBC3D21AB1FCE5C003F8F02AAC41F96D054F90A8114C260B3831882A44608EE81C2F3726AA72D11CA95", "tx_json": { "Cuenta": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "Precio": "12", "Banderas": 65536, "Secuencia": 23, "SigningPubKey": "02272E391673B735C9D96435DAFF89F9EA7B4EC285C39643A754848EDE19A65426", "TakerGets": { "moneda": "EUR", "el emisor": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "valor": "0.94" }, "TakerPays": { "moneda": "USD", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "valor": "1" }, "TransactionType": "OfferCreate", "TxnSignature": "3045022100CD7511B302ED7D0C299C0F2C1014EA5AA62F7584B361B940C0E8A98FBA04EDE10220047590E7A678818000B5B221EBBC3D21AB1FCE5C003F8F02AAC41F96D054F90A", "hash": "C35F98185CEBD03EEBCBDB6BB4364288DD8A0EDCF6FE137E9E3950524353AC8B" } } }

Paso 2 Me Hizo encontrar un camino para obtener la ruta a utilizar en el envío de la transacción, con base en las ofertas anteriores creado en el paso 1

{ el "método": "ripple_path_find", "params": [ { "source_account": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "source_currencies": [ { "moneda": "XRP" }, { "moneda": "USD" } ], "destination_amount": { "moneda": "NGN", "valor": "305", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd" }, "destination_account": "rwRRz7yt7GXe2NjZjB9ruLs7r71fi1WNpq", "SendMax": { "moneda": "USD", "valor": "1", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq" } } ] }

Ejemplo De Respuesta

{ "resultado": { "alternativas": [ { "paths_canonical": [], "paths_computed": [ [ { "cuenta": "rntHFZfVgoCeBNYDxSejkPewViFow1Sz6r", "tipo": 1, "type_hex": "0000000000000001" }, { "cuenta": "rJHPyhod8HuZhps6Gerf7t3yLfinpVLXnt", "tipo": 1, "type_hex": "0000000000000001" }, { "moneda": "NGN", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "tipo": 48, "type_hex": "0000000000000030" } ], [ { "moneda": "EUR", "el emisor": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "tipo": 48, "type_hex": "0000000000000030" }, { "moneda": "NGN", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "tipo": 48, "type_hex": "0000000000000030" } ] ], "source_amount": { "moneda": "USD", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "valor": "1" } } ], "destination_account": "rwRRz7yt7GXe2NjZjB9ruLs7r71fi1WNpq", "destination_amount": { "moneda": "NGN", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "valor": "305" }, "destination_currencies": [ "NGN", "XRP" ], "full_reply": true, "ledger_current_index": 3, "source_account": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "estado": "el éxito", "validar": false } }

Paso 3 He utilizado una de las rutas que se devuelve en la respuesta de arriba para enviar la solicitud de pago.

Solicitud De Muestra

{ el "método": "enviar", "params": [ { "sin conexión": false, "secreto": "sn1GPS42vNZXg6GYrsSXxYv2VrbkG", "fee_mult_max": 100000, "tx_json": { "Cantidad": { "moneda": "NGN", "valor": "305", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd" }, "Cuenta": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "Destino": "rwRRz7yt7GXe2NjZjB9ruLs7r71fi1WNpq", "TransactionType": "De Pago", "Precio": "10", "Banderas": "0", "Caminos": [ [ { "type_hex": "0000000000000030", "el emisor": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "tipo": "48", "moneda": "EUR" }, { "type_hex": "0000000000000030", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "tipo": "48", "moneda": "NGN" } ] ], "SendMax": { "moneda": "USD", "valor": "1", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq" } } } ] }

Ejemplo De Respuesta

{ "resultado": { "engine_result": "tesSUCCESS", "engine_result_code": 0, "engine_result_message": "La transacción fue aplicado. Sólo el final de validación de contabilidad.", "estado": "el éxito", "tx_blob": "1200002200000000240000000461D50AD5F57690A0000000000000000000000000004E474E00000000009B0C47828166D6258E8E7F0AA3B464FEA9C17E6668400000000000000A69D4838D7EA4C68000000000000000000000000000555344000000000045249D498FF76EF67DACD0958930DB02EE4A9D4473210336DF52033C6AE8F955A8AE89CE32793C0DB54A3DA2477A0F769EA9A4320D754D74463044022019DBE3D2C7ADF58AD35F1924889B8612EC46E8421492BDC591D50EEABCBC0BA9022046F9D34D8DAF24698B3B5A973AB575E5901A1C14EB80E8ABDC25B0D8010F0983811445249D498FF76EF67DACD0958930DB02EE4A9D4483146757FA04E0212B971F7F76E3E4A85A1B280EAE770112300000000000000000000000004555520000000000C260B3831882A44608EE81C2F3726AA72D11CA95300000000000000000000000004E474E00000000009B0C47828166D6258E8E7F0AA3B464FEA9C17E6600", "tx_json": { "Cuenta": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "Cantidad": { "moneda": "NGN", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "valor": "305" }, "Destino": "rwRRz7yt7GXe2NjZjB9ruLs7r71fi1WNpq", "Precio": "10", "Banderas": 0, "Caminos": [ [ { "moneda": "EUR", "el emisor": "rJ5mA3kRwJWahdb3GqH3vmrbRd7eVufsvk", "tipo": 48, "type_hex": "0000000000000030" }, { "moneda": "NGN", "el emisor": "rE3FSvB4Q59WZUXcDyB8tgAFBTZMwCJ1fd", "tipo": 48, "type_hex": "0000000000000030" } ] ], "SendMax": { "moneda": "USD", "el emisor": "rfJbVE7tTrkbmuqTBvhdYDRExp9oamTzrq", "valor": "1" }, "Secuencia": 4, "SigningPubKey": "0336DF52033C6AE8F955A8AE89CE32793C0DB54A3DA2477A0F769EA9A4320D754D", "TransactionType": "De Pago", "TxnSignature": "3044022019DBE3D2C7ADF58AD35F1924889B8612EC46E8421492BDC591D50EEABCBC0BA9022046F9D34D8DAF24698B3B5A973AB575E5901A1C14EB80E8ABDC25B0D8010F0983", "hash": "58906C7DEFCF60ED6AC55A646BE3BF50E32F7B633AC6CD62E1AA6799888AA5EA" } } }

+299
Bang Dani 19 nov. 2019 9:06:08

Creo que es una impresión incorrecta. El código involucrado en CVE-2018-17144 era relativamente reciente (la UTXO lógica de manejo fue escrito en un 0,8 (versión de febrero de 2013), y se sometió a un par de pequeños cambios, y después de una gran mejora en el 0,15). Si por "código original" usted se refiere a que el código escrito por Satoshi, este problema no está relacionado, como bastante poco de que el código que está a la izquierda.

El problema no era que el código no fue entendido. Es que no estaba claro que la pieza de código era responsable de qué.

Por motivos de rendimiento, el bloque de validación se divide en varias etapas; algunos ejecutar cuando el bloque se recibió por primera vez, algunos corren más tarde, cuando en realidad es una candidata para ser parte de la mejor cadena ("activación"). El principio general es que intenta hacer que el trabajo gastado en la verificación de un bloque no válido proporcional al trabajo que un atacante tiene que hacer. Para lograr eso, la de comprobar que las cosas que son baratos para falso en primer lugar, y las cosas que son caros de falso más tarde.

Uno de esos cheques era si había doble pasa dentro de una transacción. Inicialmente, esta comprobación se realiza cuando el bloque se recibió directamente, y una comprobación de validez durante la activación. En 0.14, en una mejora del rendimiento, la verificación en el bloque inicial fue eliminado, ya que se convirtió en la ruta crítica para la validación de bloques compactos. Esto estaba mal; en lugar de eliminar el código, debería haber sido trasladado a la activación de tiempo, pero parecía que el código de activación ya estaba haciendo esta comprobación. En 0.15, cuando el UTXO de manejo de código fue reescrito, esta comprobación de validez en el tiempo de activación se quitó así, porque no parecen ser, de hecho, parte de el código de validación.

El error en mi opinión era que la división de la responsabilidad de este tipo de doble gasto de verificación no era obvio y debería haber sido documentado. Yo era en gran parte responsable de esto. Varios de los procedimientos están en su lugar para ayudar a prevenir los problemas de esta magnitud, incluyendo a veces demasiado lento proceso de revisión y pruebas funcionales (que hacen ejercicio de doble gasto, ... no sólo el doble de gasto-dentro-de-una-transacción). En este caso, esos procedimientos no.

El resto de mi respuesta es mi opinión personal, como creo que no puedo hablar por nadie más.

hay partes del código fuente de bitcoin que son 'intocable'?

No. Ciertamente, algunas partes son más peligrosas para modificar, pero todo es una cuestión de costo vs beneficio. Los cambios en 0,15 fue una muy justificada la mejora del rendimiento, y tiene un montón de ojos, pero no lo suficiente. Para el futuro, creo que esto significa que el bar para su revisión y pruebas, frente a la posible ganancia debe ser revisada por los cambios de tocar este UTXO código de control.

Cuánta magia hay en el código fuente que los contribuyentes o simplemente por la necesidad de averiguar existe?

Creo que no hay ninguna magia. Ciertamente no toda la lógica es igual de fácil de entender, pero eso es cierto para cualquier proyecto de software.

Si bitcoin se rompió, el equipo principal saltar a la oportunidad de recrear bitcoin

Mi opinión personal es que la reescritura de algo a partir de cero es órdenes de magnitud más difícil de hacer de forma correcta de hacer pequeños cambios incrementales que son individualmente-revisable. Tenga en cuenta que la barra de la corrección en el consenso código es muy alta: no solo debe aceptar válidos todos los bloques, también debe rechazar todos los bloques no válidos. Este tipo de coherencia entre los códigos base es extremadamente difícil de mantener. La mayoría de los reimplementations de Bitcoin consenso de normas que han tenido uno o un par de errores graves en su historia, y no me sorprendería si la mayoría de ellos aún no han exactamente la misma lógica que en todos los casos.

bitcoin con todas las nuevas características (mástil, toque, schnorr) etc.

Afortunadamente, esas cosas están muy bien aislados de cambios con una interfaz sencilla para el resto del sistema. Secuencia de comandos de validación es casi sólo un "llamar a una función con la salida y la entrada sin mucho de cualquier otro contexto, y devolver verdadero o falso". También hay formas evidentes de introducir compatible con versiones anteriores cambios en ella: simplemente añadir "return false" declaraciones en lo que no modifique ninguna de las otras variables.

Se describe el código fuente como tener un tumor canceroso centro de una enorme exageración, o es de broma precisa?

Yo no sabría lo que el centro sería, por lo tanto creo que es una exageración.

Es la idea de los actuales colaboradores que trabajan en todo el antiguo código como caminar sobre cáscaras de huevo precisa?

Tocar consenso código es siempre caminando sobre cáscaras de huevo, pero eso no quiere decir que no debe o no puede ser hecho. Yo también no creo que sería diferente si el código es diferente de la historia - el consenso de que la corrección es sólo un problema difícil.

+180
Guliver 30 mar. 2014 22:07:45

Quiero poner a prueba y desarrollar una fuente abierta de minería de la piscina. No tengo acceso a un ASIC miner o de la GPU, así que tengo uso de mi CPU para simular la minería y ver cómo el grupo que realmente funciona.

El problema es que el bitcoin testnet dificultad es muy alta y la CPU no puede mío, producir bloques y conseguir la recompensa. Necesito una dificultad baja privado bitcoin con el fin de probar el proceso de minería. ¿Cómo puedo lograr esto?

+169
katyska 5 jul. 2010 12:51:48

Mostrar preguntas con etiqueta