Puede un nodo recibe dos transacciones desde el mismo usuario (doublespend)?

Estoy aprendiendo cómo la blockchain obras. He leído que cuando alguien (digamos Alice) enviar dos veces una transacción a dos pueblos diferentes (Bob y Charlie) tal que Alice tiene sólo lo suficiente para pagar el Bob o Charlie, no tanto, luego de la primera valida del bloque de contención de las dos transacciones serán aceptadas y el otro será rechazada.

Mi pregunta es : ¿Qué pasa si dos transacciones Alice -> Bob Y Alice -> Charlie se envían en el mismo nodo y nodo que valida su bloque ? Es posible ? Si no, ¿por qué ?

+553
iTwister Lex 21 ene. 2016 22:04:54
17 respuestas

El tamaño máximo de bloque es de 4.000.000 de bytes (4 MB). Esto es debido a que el bloque de cálculo de peso es la base de tamaño (en MB) * 3 + total tamaño (en MB) = bloque de peso (ver BIP 141). Dado que la única unidades de MB, el bloque de peso sólo las unidades también están MB, por lo tanto el tamaño máximo de bloque es el mismo que el bloque de peso.

El mejor tamaño posible en relación al peso que puedo pensar es en una transacción que también pasa P2WSH de salida que tiene un ridículo redeemscript. Y luego está también la coinbase transacción y el bloque de encabezado. El testigo sería 4000000 - 240 * 3 - 240 = 3999040. Así que hay 3999040 bytes en el testigo. El total de tamaño de bloque es entonces 3999040 + 240 = 3999280 bytes.

+931
zenoven 03 февр. '09 в 4:24

Estoy tratando de entender lo que es la frase "MaxBTC" y para qué se utiliza? Soy nuevo en bitcoins.

Muchas gracias.

+816
brusnikina 11 feb. 2013 9:54:36

bitcointrader se está convirtiendo en un favorito de Australia de cambio por dinero en efectivo en el mostrador depósitos ofreciendo precios competitivos y buen servicio

https://bitcointrader.com.au

+801
pamo 1 feb. 2019 8:06:36

Ya es posible hacer un seguimiento de las transacciones en Bitcoin, es posible diseñar programas de fidelización?

+790
Mohammad Habib 31 mar. 2010 23:55:13

BIP68 prescribe cómo poner el intervalo de tiempo en el nSequence campo, pero luego BIP112 dice usted que es posible especificar en la secuencia de comandos con una anotación como "30d". ¿Por qué hay dos maneras de hacer la misma cosa? Son ambos necesarios, o es sólo uno de los dos necesaria en la fase de verificación?

+723
H M Bayzid Khan 17 mar. 2016 19:57:17

Yo apogolize si esto se ha preguntado, me han pasado varias horas tratando de entender esto.

He encontrado un documento antiguo de mi con un Litecoin Pública y clave Secreta.

  • Yo no tengo un *.dat archivo, es esto un problema?
  • Me tienen La clave Pública es de 34 caracteres
  • Me tienen La clave Privada es de 51 caracteres
  • Yo estoy usando el Litecoin Núcleo Qt - Wallet (Que he utilizado en 2015).
  • El blockchain es descargado (10GB), sin embargo, solo se queda aquí

  • P1: Hacer todo lo que la oferta es mi clave privada?

  • P2: ¿hay una manera de comprobar el equilibrio con cualquiera de mis llaves, o conversiones de abajo?
  • P3: Son las monedas perdido si no tienes el .dat archivo más?

En la Aplicación, puedo ejecutar el Debug > Consola y ejecutar:

# (Esta es una dirección falsa, pero es en este formato)
importprivkey "6vpo4RFWLcGhk4VsdFk34K3243K3kdsk4k23k32kakasdkewkwe" "Jesse"`

El de arriba me da un "por Cobrar" clave bajo la Dirección de Recepción , que es idéntica a la de mi clave Pública (34 caracteres).

He utilizado en algunas Bitcoin herramientas para convertir la clave Pública, pensé que puede ser que necesite para ejecutar importpubkey, la clave es estar allí ya es visible en mi Dirección de Recepción?

  • No estoy seguro del por qué, pero yo era capaz de conseguir:
  • (un) (Dirección de Hash): 40 personaje hash
  • (b) (Hash de 160 Dirección de Bitcoin, el uso de una): 34 caracteres
  • (c) (clave pública para Hash, el uso de una): 40 caracteres

No estoy seguro de lo que todo esto significa, que este es terriblemente confuso no recuerdo cómo hice esto en el pasado. Si alguien me pudiera dar una simple respuesta realmente lo apreciaría y voy a estar seguro para marcar como correcta y resolver el problema :)

+684
jeff devasia 4 jul. 2015 20:23:46

Mi pregunta es acerca de los cambios a bitcoin hecho por cometer rango [a75560d8, 6ff5f718], y su efecto en el consenso. Fuera de este rango de cuatro comete (atribuidos a satoshi) durante las fechas 30 de julio-31 de 2010, sólo la primera y la última se compromete son relevantes para la cuestión (los dos en el medio parecer una generación de cambio en el sistema, no el código).

Los dos se compromete (primera y la segunda a partir de ahora), a75560d8 y 6ff5f718 se atribuyen a la fijación de un buen par de vulnerabilidades en bitcoin secuencia de comandos de la semántica y de ejecución. Por ejemplo, en el primer commit :

  1. Las restricciones se aplican a empujar y tamaño de los stacks
  2. El llamado script mecanismo de control de versiones se retiró, y los diversos NOP# opcodes se añadieron en su lugar
  3. Las restricciones se aplican a bignum operaciones
  4. OP_RETURN fue cambiado simplemente de la terminación de la secuencia de comandos para devolver false para que toda la ejecución

En la segunda cometer :

  1. Las restricciones se aplican en el número máximo de códigos de operación en la secuencia de comandos
  2. La ejecución de desconocido opcodes se devolverá false para la ejecución
  3. El tamaño máximo de la secuencia de comandos se redujo a la mitad a 10kb
  4. Un cambio *CAMBIO de códigos de operación que se realizó (la verdad no me uderstand que si)
  5. Una función llamada VerifyScript fue introducido en bitcoin, que ha cambiado el comportamiento de la ejecución del script

Esta pregunta es acerca de esta lista de cambios, y si alguno de ellos podría no ser compatible. En concreto, me centraré en el cambio (5) a partir de la segunda cometer : 6ff5f718:script.cpp

Antes de este cambio, en el punto de txout de la redención, un redentor de la transacción de entrada del scriptSig y la prevout del scriptPubKey se unieron para formar una única secuencia de comandos mediante la colocación de un OP_CODESEPARATOR entre ellos, y el resultado de pasar a EvalScript que iba a ejecutar la secuencia de comandos.

Dentro de EvalScript, una pila vacía se creó y los resultados de las distintas operaciones que se realizan en la secuencia de comandos se insertan en ella. Cuando la ejecución del script finaliza sin errores, se devuelve un booleano; si la pila no está vacía, entonces el elemento de la parte superior se pasa a un CastToBool función y devuelve (verdadero o falso), y si la pila está vacía, a continuación, false es devuelto.

Tras el cambio, el VerifyScript función se envuelve alrededor de dos llamadas independientes a EvalScript, la ejecución de scriptSig y scriptPubKey por separado, uno tras otro. La pila vacía que se ha creado previamente dentro de EvalScript en su lugar se crea en VerifyScript antes de cualquier secuencia de comandos que comience la ejecución, y el control final de la pila el contenido (o la falta del mismo) y CastToBool , también fue trasladado a VerifyScript, hasta el punto de que después de tanto scriptSig y scriptPubKey completado su ejecución.

En VerifyScript, en primer lugar el scriptSig de la acción redentora de la transacción se pasa a EvalScript junto con la pila vacía. La máquina ejecuta la secuencia de comandos y los resultados de las operaciones se inserta en la pila que se pasó con ella. Si no se han producido errores durante la ejecución, la verdad es devuelto a VerifyScript. En segundo lugar, si es cierto fue devuelto, el scriptPubKey de la operación de financiación se pasa a EvalScript junto con la pila, que en ese momento tiene el contenido a la izquierda encima de scriptSig's de la ejecución. El scriptPubKey se ejecuta, que además manipula la pila el contenido y si no hay errores ocurridos, devuelve true volver a VerifyScript. Por último, si de verdad fue devuelto, la comprobación de pila vacía y CastToBool se hace, lo que determina el resultado final de la secuencia de comandos de verificación.

La razón de este cambio fue citado como una revisión para una posible vulnerabilidad en el Script : SÍ respuesta, BCTalk hilo. Aunque es ortogonal a esta pregunta, es por eso que he incluido en la lista de cambios de cometer a75560d8.

No es demasiado difícil ver que, considerando simple (que carecen de un checksig) secuencias de comandos, este cambio es de hecho compatible. En el peor de los casos, algunas secuencias de comandos pueden convertirse en unspendable, pero no parece ser el caso en el que previamente unspendable script podría convertirse disponibles como resultado de este cambio.

Incluso para las secuencias de comandos con una checksig como p2pk, p2pkh y multisig, el CHECKSIG código de operación es siempre en scriptPubKey, que se separó de los elementos de scriptSig por un OP_CODESEPARATOR antes de este cambio. Aparentemente, la semántica seguía siendo el mismo - hasta que dos años más tarde.

Mirando en la página de la wiki para OP_CHECKSIG wiki-checksig, los pasos (2) a (4) explicar cómo ir de scriptCode para subíndice, y específicamente lo que sucede cuando una OP_CODESEPARATOR existe en scriptCode :

  1. Un nuevo subíndice se crea a partir de la scriptCode (el scriptCode es la realidad script - el scriptPubKey para no segwit, no P2SH secuencias de comandos, o el redeemscript no segwit P2SH secuencias de comandos). El secuencia de comandos desde el inmediatamente después de que el recientemente analizado OP_CODESEPARATOR a la final de la secuencia de comandos es el subíndice. Si no hay OP_CODESEPARATOR toda la secuencia de comandos se convierte en el subíndice
  2. Cualquier ocurrencia de sig se eliminan de subíndice, si está presente (no es normal tener una firma en un script de entrada de un transacción)
  3. Cualquier resto de OP_CODESEPARATORS se quitan de subíndice

Ahora, antes de cometer 6ff5f718, cuando scriptSig y scriptPubKey se unieron para formar una sola secuencia de comandos, el scriptCode quedaría así :

<scriptSig> CODESEPARATOR <scriptPubKey>

Con checksig operaciones que tengan lugar en scriptPubKey, haciendo subíndice ser todo a la derecha de CODESEPARATOR - básicamente <scriptPubKey> sí (a menos que más codeseparators o si firmas consumida por un checksig también existen en scriptPubKey).

Después de la confirmación, los hay, en efecto, ser separado en dos ejecuciones con scriptSig primera y scriptPubKey segundo, donde cada ejecución tendría su propia scriptCode y posteriormente su propia subíndice. Ahora, Porque checksig de las operaciones sólo se realiza en scriptPubKey, parece que el subíndice seguiría siendo la misma, pero ¿qué pasaría si un CHEQUE(MULTI)SIG de código de operación se ejecuta en scriptSig?

En 24 de enero de 2012, el bloque 163685 se extrae que contenía transacción eb3b82c0884e3efa6d8b0be55b4915eb20be124c9766245bcc7f34fdac32bccb. Esta transacción, los dos inmediatamente después de él, y de su financiación en b8fd633e7713a43d5ac87266adc78444669b987a56b3a65fb92d58c2c4b0e84d que también fueron extraídos en el mismo bloque están todos los mencionados en el BIP-17, que es una implementación alternativa de p2sh semántica :

  • OP_CHECKHASHVERIFY re-definir la existente OP_NOP2 código de operación, y funcionará de la siguiente manera cuando se ejecuta:

  • En primer lugar, el hash al final de la anterior secuencia de comandos (en el caso general, scriptSig; si no antes de la secuencia de comandos, una cadena nula es un algoritmo hash) a partir a partir de la última evaluado OP_CODESEPARATOR adelante (o de la comienzo de la secuencia de comandos, si no OP_CODESEPARATOR estaba presente)

  • A continuación, compare esto con el elemento en la parte superior de la pila (si no hay ninguno, el guión falla inmediatamente)
  • Si el hash de partido, no hacer nada, se procede como si un OP_NOP; si no coinciden, el guión falla inmediatamente. Tenga en cuenta que en el caso de un emparejado de hash, la parte superior de la pila de elemento (el hash de su comparación con el) no es se desprendió la pila. Esto es para la compatibilidad.

Observe cómo en bip17 la redeemScript es dado como un verdadero script ejecutable en scriptSig, en lugar de una sola de insertar datos de un blob como es el caso de la bip16. Aunque más viejo que los nodos no hará cumplir la hash160 de scriptSig a ser igual a la de 20 bytes valor de prevout del scriptPubKey, todavía tiene que ejecutar y validar cualquier CHEQUE(MULTI)SIG operaciones dentro.

Estoy asumiendo aquí que estos bip17 ejemplo, las transacciones fueron minadas y validado por los nodos que ejecutan software que fue de los últimos en Enero. De 2012, pero supongamos que hay todavía nodos de la red que ejecute el software anterior, y específicamente los que se ejecutan en versiones v0.3.6 e inferior. Estos mayores nodos de ser capaz de llegar a un consenso con los nuevos nodos acerca de la validez de bloque 163685?

Va a través de la operación de financiación b8fd633e7713a43d5ac87266adc78444669b987a56b3a65fb92d58c2c4b0e84d, y mirando el resultado en el índice 1, vemos que el scriptPubKey (NOP2 es en realidad un no-activo OP_CHECKHASHVERIFY)

0x14 0x2a9bc5447d664c1d0141392a842d23dba45c4f13 NOP2 GOTA

Y en el gasto de transacción eb3b82c0884e3efa6d8b0be55b4915eb20be124c9766245bcc7f34fdac32bccb, a partir de la entrada en el índice 1, tenemos la scriptSig

0 0x47 0x30440220276d6dad3defa37b5f81add3992d510d2f44a317fd85e04f93a1e2daea64660202200f862a0da684249322ceb8ed842fb8c859c0cb94c81e1c5308b4868157a428ee01 CODESEPARATOR 1 0x21 0x0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a 1 CHECKMULTISIG

Consideremos, en primer lugar cómo el software de v0.3.7 y por encima iba a construir el subíndice para el CHECKMULTISIG en scriptSig. Comenzamos con una scriptCode que es exactamente scriptSig, y desde un CODESEPARATOR es ejecutada, el subíndice se convierte en :

1 0x21 0x0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a 1 CHECKMULTISIG

Ahora, considere cómo el software de v0.3.6 y a continuación iba a construir el subíndice para el mismo CHECKMULTISIG. Nuestro scriptCode ya no sólo a partir de scriptSig, sino de una unión de ella y scriptPubKey por un CODESEPARATOR. El scriptCode quedaría así :

0 0x47 0x30440220276d6dad3defa37b5f81add3992d510d2f44a317fd85e04f93a1e2daea64660202200f862a0da684249322ceb8ed842fb8c859c0cb94c81e1c5308b4868157a428ee01 CODESEPARATOR 1 0x21 0x0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a 1 CHECKMULTISIG CODESEPARATOR 0x14 0x2a9bc5447d664c1d0141392a842d23dba45c4f13 NOP2 GOTA

Recordar las reglas de la wiki. En el punto cuando CHECKMULTISIG se ejecuta, subíndice es todo, desde el punto después de la última ejecutado CODESEPARATOR y hasta el final de la secuencia de comandos, con todos los CODESEPARATORs en el lado derecho de la checksig operador eliminado :

1 0x21 0x0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a 1 CHECKMULTISIG 0x14 0x2a9bc5447d664c1d0141392a842d23dba45c4f13 NOP2 GOTA

Si esto es correcto, entonces parece que el viejo nodos con versiones v0.3.6 y a continuación no se ponen de acuerdo en cual es el correcto sighash para este gasto de transacción, pero ya no puedo realista ejecutar cualquier versión anterior del software, no puedo estar absolutamente seguro. Hice un parche reciente bitcoin core versión con algunos cambios que me permitió simular la validación de tx eb3b82c0884e3efa6d8b0be55b4915eb20be124c9766245bcc7f34fdac32bccb, y como era de esperar no pasa la validación. Voy a añadir las dos sighashes a continuación junto con la clave pública y la firma para la comparación.

Así que mi pregunta es, ¿hay algo que yo estoy entendiendo o tal vez faltó que permitiría pre-v0.3.7 y post-v0.3.7 nodos para llegar a un consenso acerca de la validez de bloque 163685?

(también relevante : este SE pregunta)


Clave pública : 0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a
Firma (DER) : 30440220276d6dad3defa37b5f81add3992d510d2f44a317fd85e04f93a1e2daea64660202200f862a0da684249322ceb8ed842fb8c859c0cb94c81e1c5308b4868157a428ee
Firma (r,s) : (276D6DAD3DEFA37B5F81ADD3992D510D2F44A317FD85E04F93A1E2DAEA646602, F862A0DA684249322CEB8ED842FB8C859C0CB94C81E1C5308B4868157A428EE)

Pre-v0.3.7 sighash (no valida) :

01000000
02
4de8b0c4c2582db95fa6b3567a989b664484c7ad6672c85a3da413773e63fdb8 00000000
00
FFFFFFFF
4de8b0c4c2582db95fa6b3567a989b664484c7ad6672c85a3da413773e63fdb8 01000000
3C 51210232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a51ae142a9bc5447d664c1d0141392a842d23dba45c4f13b175
FFFFFFFF
02
E0FD1C0000000000 19 76a914380cb3c594de4e7e9b8e18db182987bebb5a4f7088ac
C0C62D0000000000 17 142a9bc5447d664c1d0141392a842d23dba45c4f13b175
00000000
01000000

sha256 : 1EB276326D72CB358F6C275D6542F76EED4E36364727CB82D40A116244EBDDB5
sha256d : 11491E74778E1FA8C40CC8E07E1F835677CF1AC81F54255EC1C7125C1894939A

Post-v0.3.7 sighash (no valida) :

01000000
02
4de8b0c4c2582db95fa6b3567a989b664484c7ad6672c85a3da413773e63fdb8 00000000
00
FFFFFFFF
4de8b0c4c2582db95fa6b3567a989b664484c7ad6672c85a3da413773e63fdb8 01000000
25 51210232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a51ae
FFFFFFFF
02
E0FD1C0000000000 19 76a914380cb3c594de4e7e9b8e18db182987bebb5a4f7088ac
C0C62D0000000000 17 142a9bc5447d664c1d0141392a842d23dba45c4f13b175
00000000
01000000

sha256 : 3858A592C15A47F3058010689883DECCD4AF41F5367B9776429613DFB3339883
sha256d : 8D7AD159644D312664472F90E7B823071B1361725CAC78531569FD836EA90350
+684
joshp 2 dic. 2015 17:54:10

He encontrado este bloque en blockchain explorer. Está bastante bien confirmado, pero no tiene ninguna transacción en el interior, a excepción de "se acaba de generar Monedas" uno. Cómo esto puede ser posible y ¿para qué?

Pregunta adicional: Si esto es tan fácil de generar tales bloques, lo que deja a los mineros a generar estos (ligero) bloques como muchos como sea posible para ganar bitcoins? Gracias.

+510
oksana68 2 mar. 2010 11:18:30

Prácticamente no hay "bloques vacíos". Todos los bloques excepto el bloque génesis es en realidad encabezada por el hash del bloque anterior y, a continuación, seguido por los mineros de la recompensa del bloque anterior en términos de la primera transacción del bloque actual. Por lo tanto, debe haber siempre al menos una transacción.

+500
user242916 25 sept. 2015 18:22:09

Ver "Que las monedas son compatibles?" en Trezor FAQ

En este momento es Bitcoin, Etereum (+ todas CEI-20 fichas), de Etereum Clásico, ZCash, Litecoin, Namecoin, Dogecoin, Guión y Bitcoin Testnetenter image description here

Así que la conclusión es, Trezor es compatible con la mayoría de las altcoins, pero el equipo de software no. Si usted no puede código de un software que permite Trezor para sostener más de altcoins, sólo puede utilizar las altcoins en la lista, con el nombre de la cartera junto a él.

+499
AnthonyDale 16 oct. 2016 18:23:43

Bitcoin bloque intervalo de tiempo es de un promedio de 10 minutos, que es la dificultad se ajusta de tal manera que cada 10 minutos un minero se las arreglan para encontrar el derecho de hash. Esto es sólo un promedio de tiempo, sin embargo, la distribución real de la confirmación de tiempo es de Poisson.

¿Cuál es el más corto y el más largo intervalo de bloque que se haya registrado en Bitcoin?

+474
George Lucas 22 feb. 2017 2:14:31

Mejor uso de la CPU a la mía.

Básicamente, usted debe descargar una optimizado litecoin minero, y que apunte a una piscina.

Ver también este hilo.

+347
Jacob Bryant 12 may. 2011 7:55:38

¿Cómo puedo transferir mi bitcoin para litecoin?

+342
cpilko 18 feb. 2012 6:56:28

La principal razón por la que los mineros pueden ganancia de eficiencia de energía a un ritmo más rápido que los smartphones es porque les falta el hardware el que consume la mayoría de la energía: la pantalla.

Intel está constantemente haciendo más eficiente de la energía de los chips, pero al que sólo representa una pequeña fracción de la energía consumida por el teléfono, no como resultado impresionante aumenta la vida de la batería.

Por otro lado, los mineros están prácticamente nada más que personalizada fichas. Por lo tanto al aumentar la eficiencia de los chips, todo el dispositivo ve a un enorme aumento en la eficiencia.

+262
Richard Stobart 14 oct. 2016 12:47:54

Encontrado: Stephenson Cryptonomicon.

Véase también la Moneda Digital: diez años antes de Bitcoin, de Neal Stephenson Cryptonomicon

+181
Amirhossein Pooya 24 jul. 2017 9:30:56

Es sólo una secuencia de comandos blockexplorer.com no parece comprender y, en consecuencia, marcas como "extraño". Bitcoin secuencias de comandos de determinar quién es capaz de reclamar los bitcoins. Transferir a una dirección es sólo una de las muchas opciones posibles.

Si las monedas de una transacción en que se gastan en una transacción B dos scripts están involucrados: El "ScriptPubKey" de Una transacción y el "ScriptSig" de transacción B. Los dos scripts se combinan y se ejecuta como un todo.

Normalmente, los scripts de verificación si el consumidor puede identificarse con una clave privada correspondiente a la dirección especificada en la transacción A. Pero no en este caso:

Eche un vistazo a la columna de ScriptPubKey: dice OP_WITHIN. Este comando comprueba si un número está en un rango dado. La transacción alegando que dichas monedas pone los argumentos -1 -100 y 100 en la pila. Desde -1 es entre -100 y 100, la transacción es válida.

Obviamente, esto no tiene mucho sentido, pero es sólo una testnet transacción.

Para obtener más información acerca de los scripts de echar un vistazo a esta página de la wiki.

+138
Paula C D 7 sept. 2015 8:18:55

Soy bastante nuevo en programación y sólo han construido básicos de aplicaciones java, así que tengan paciencia conmigo. Estoy tratando de ejecutar la cartera básica de la aplicación de la bitcoinj repositorio (utilizando intellij y maven). He clonado el repositorio de git, importan las hijas como una Intellij proyecto y añadimos el dependecy a la pom archivo, pero todavía me dan estos errores: http://i.imgur.com/Udv1dw3.png.

He intentado todo lo que se pueda imaginar y no puede solucionarlo. Si alguien me pudiera ayudar le agradecería.

Gracias.

+87
Vltava 6 feb. 2016 10:04:18

Mostrar preguntas con etiqueta