Cómo obtener la dirección de CTxIn objeto

Estoy leyendo bitcoin core código fuente. Quiero saber cómo obtener la dirección bitcoin de CTxIn objeto.

Tengo un CTransaction objeto. He encontrado la manera de cómo obtener las direcciones de vsal como la siguiente. Pero yo no sé acerca de vin.

UniValue a cabo(UniValue::VOBJ);
ScriptPubKeyToUniv(txout.scriptPubKey, out, true);

UniValue u = find_value(salida, "direcciones");
UniValue uv = u.getValues()[0];
newDestination = uv.get_str();

CTxIn tiene un scriptSig. Creo que me puede llegar a la dirección de la misma.

CTxIn

https://dev.visucore.com/bitcoin/doxygen/class_c_tx_in.html


Actualización 1

He encontrado la forma de obtener la clave pública mediante el uso de ScriptToAsmStr. Sé que esto funciona sólo para P2PKH dirección.

vector<string> array;
CScript s = _tx.vin[0].scriptSig;
cadena = ScriptToAsmStr(s, true);
boost::algoritmo::split(matriz, a, boost::is_any_of(" "));
if (array.size() == 2) {
 cout << matriz[1] << endl; // 0396f8781a4900372a5d72d84718d146170d5983e67dff8b4a28fef80690c09767
}

Ahora estoy buscando la manera de convertir la clave pública a la dirección bitcoin en mainnet.


Actualización 2

He probado como la siguiente, pero "no válido" se mostró..

const char *cstr = "0396f8781a4900372a5d72d84718d146170d5983e67dff8b4a28fef80690c09767";
std::vector<unsigned char> vec(cstr, cstr + strlen(cstr));

CPubKey clave pública(vec);
si (clave pública.IsValid()) {
 cout << "válido" << endl; 
} else {
 cout << "no válido" << endl;
}

Actualización 3

Gracias a Andrew Chow respuesta, yo podría hacer una CPubKey objeto. Todo lo que queda es para la salida de la dirección bitcoin desde el objeto.

#include "utilstrencodings.h"

std::vector<unsigned char> vec = ParseHex("0396f8781a4900372a5d72d84718d146170d5983e67dff8b4a28fef80690c09767");

CPubKey clave pública(vec);
si (clave pública.IsValid()) {
 cout << "válido" << endl;
} else {
 cout << "no válido" << endl;
}

Actualización 4

Finalmente, llegué a una dirección bitcoin de una CTxIn objeto. Creo que esto no es de manera inteligente. Hay otras maneras. Y todavía no está seguro acerca de CKeyID del significado. Voy a mirar en detalle.

CKeyID id = pubkey.GetID();
CBitcoinAddress dirección(id);
si (dirección.IsValid()) {
 cout << "válido" << endl; 
} else {
 cout << "no válido" << endl;
}

cout << dirección.ToString() << endl; // 15L7U55PAsHLEpQkZqz62e3eqWd9AHb2dh
+374
tyrese 15 sept. 2018 18:14:43
22 respuestas

Lo que estamos tratando de describir es exactamente lo mismo que tener reutilizables prueba-de-trabajo: para hacer el trabajo, haciendo hash y, a continuación, ser capaz de utilizar los valores hash de cualquier bloque de crear.

Eso no soluciona el problema de minería de datos se supone que resolver, que es el doble problema de gasto. Un minero puede utilizar el mismo hash que gaves a él/ella el "derecho" a la mina de un bloque de la mina de dos o más bloques paralelos que se pasan el mismo bitcoins, pero enviar a diferentes direcciones.

Prueba-de-trabajo hash deben estar vinculados a una y sólo a una cuadra.

+981
gatsbyz 03 февр. '09 в 4:24

Parece que se están ejecutando bitcoind en el mismo servidor que está sirviendo páginas web. Yo recomendaría correr bticoind en un servidor separado por completo, por varias razones:

  1. bitcoind hace mucho más que simplemente generar direcciones, y por tanto, requiere una gran cantidad de recursos de tu servidor web.
  2. Si usted está usando esta instancia de bitcoind a la realidad de la tienda de monedas, lo mejor es mantener un público en el servidor. Hay maneras de proteger su cartera, pero lo mejor es simplemente no exponer a la superficie de ataque
  3. Mediante la ejecución de bitcoind en un servidor independiente, se puede utilizar de múltiples servidores web, haciendo que todo su sistema más escalable

Movimiento bitcoind a un segundo servidor eliminará el problema de los recursos en tu servidor web, así como para dar una capa adicional de seguridad. Estos beneficios serán probablemente mayores que el costo de la segunda servidor.

+934
Aaron L 8 sept. 2012 14:16:48

Si un nodo recibe una de las transacciones se guarda. Si ahora enviar otra transacción con la misma entrada se rechaza, porque ya hay una transacción. Así que no te haga doble pasar de esta manera.

Si usted quiere enviar a la segunda transacción con cargos a un minero que no recibió su primera transacción, que tal vez se incluyen más rápido y por lo tanto, es reemplazar la primera de las transacciones, siendo la primera de las transacciones no pueden ser incluidos en un nuevo bloque, ya que el resultado ya fue utilizado.

Si un comerciante acepta 0-confirmación de las transacciones, ha de aceptar que la transacción puede ser revertido. Así que él sólo debe hacerlo si él confía en usted durante más de la cantidad que usted transferido a él.

+878
Cantenten 10 feb. 2011 0:38:41

Ok, así que me he descargado el bitcoin programa y comenzó a subir. Y el programa inició la descarga de miles de bloques. No he pinchado nada o se inscribieron en cualquier lugar, he intentado y yo creo logrado encontrar mi dirección, no hay seguro de que aunque. Ahora es ocupado todavía la descarga de bloques. En la pantalla de resumen muestra la cartera fuera de sincronización. ¿Cómo puedo sincronizar esto o esto sucede una vez que los bloques se hacen? ¿Cómo puedo hacer/conseguir/mina de bitcoins, cualquier sitio web que puede ser recomendado? ¿Tengo que añadir mi propio dinero para empezar?

+770
Augusto Xavier 22 jul. 2016 18:52:31

¿Qué datos diferentes Bitcoin .dat son archivos que contienen? ¿Qué hay de los otros archivos en la misma carpeta?

La billetera.archivo dat es algo documentado y hay algunas maneras para convertir a un formato legible para las personas, pero no creo que el mismo puede decirse acerca de los otros archivos. ¿Qué datos que almacenan y cómo es codificado?

+724
Superbuggg 4 ago. 2011 4:31:36

Recientemente he estado yendo a través de el código fuente de python para electrum y encontrado con las siguientes líneas de código en la mneumonic.py archivo de partida de la línea 130:

def mnemonic_to_seed(self, mnemónico, una frase):
 PBKDF2_ROUNDS = 2048
 mnemónico = normalize_text(mnemónico)
 passphrase = normalize_text(frase de contraseña)
 volver pbkdf2.PBKDF2(mnemónico, 'electro' + frase de contraseña, iteraciones = 
 PBKDF2_ROUNDS, macmodule = hmac, digestmodule = 
hashlib.sha512).leer(64)

Vemos claramente que devuelve un 64 bytes o 512 bits de semillas en lugar de lo que todos sabemos que un bitcoin priv clave debe ser de 256 bits. Es este el final de la función a ser llamada para priv de generación de claves o hay pasos o funciones que me perdí?

+717
Ben Maxwell 19 oct. 2012 8:43:03

En Satoshi Nakamoto del diagrama:

enter image description here

Entiendo que este diagrama está fechado, pero por favor tengan paciencia conmigo. Creo que me he perdido un punto crítico del diagrama:

Pregunta: Supongamos que las tres operaciones están representadas #1, #2, y #3 de izquierda a derecha.

Es la Firma de la Transacción #2 calcula utilizando Propietario de la 1 de la Clave Privada y los datos de la Transacción por Transacción #1 o es calculada utilizando el Propietario de la 1 de la Clave Privada y los datos de la Transacción por Transacción #2?

Gracias.

+625
ChrisPeterson 11 ago. 2011 4:58:12

Conceptualmente, los pedidos llegan en el intercambio y se procesan de una en una. El destino de su pedido depende de los pedidos que están en los libros cuando el tuyo es procesado. Así que lo que importa es el estado del mercado en el momento de su pedido "llega" en el intercambio. Sin duda, habrá un retardo entre el instante en que usted realiza el pedido y el instante en que llega a la bolsa. La longitud de este retraso depende de la latencia de internet, la velocidad de intercambio de equipos, etc.

Si usted coloca una orden de límite, entonces el precio va a ser lo que quería ser. El pedido se ejecuta si hay una coincidencia con el fin de que ya está en los libros, en el instante de llegada; en caso contrario su solicitud será puesta en los libros y puede o no puede ser llenado por algún pedido posterior.

Si se coloca un mercado de compra (o venta) de la orden, el precio será lo que sea la más baja (ask/ oferta más alta) está en los libros, en el instante de su llegada. Por supuesto, esto podría ser un precio diferente de lo que vio cuando el pedido. Eso es un riesgo inherente de las órdenes de mercado.

+612
botanicpower 3 feb. 2013 10:59:04

tuve la locktime campo de los gastos de transacción accidentalmente se establece en 0 cuando en realidad es 272295 para esta transacción.

{
 "hash": "7edb32d4ffd7a385b763c7a8e56b6358bcd729e747290624e18acdbe6209fc45",
 "num_inputs": 1,
 "de entrada": {
 "0": {
 "los fondos": 990000,
 "hash": "40eee3ae1760e3a8532263678cdf64569e6ad06abc133af64f735e52562bccc8",
 "índice": 0,
 "parsed_script": "OP_FALSE OP_PUSHDATA0(72) 3045022100ad0851c69dd756b45190b5a8e97cb4ac3c2b0fa2f2aae23aed6ca97ab33bf88302200b248593abc1259512793e7dea61036c601775ebb23640a0120b0dba2c34b79001 OP_PUSHDATA0(69) 5141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51ae", 
 "script_length": 144,
 "sequence_num": 4294967294
}
},
 "lock_time": 272295,
 "num_outputs": 1,
 "la salida": {
 "0": {
 "direcciones": [
"13fLLox43yXYvfoZadXpGbkTUXkW8bhqut"
],
 "los fondos": 980000,
 "parsed_script": "OP_DUP OP_HASH160 OP_PUSHDATA0(20) 1d30342095961d951d306845ef98ac08474b36a0 OP_EQUALVERIFY OP_CHECKSIG",
 "script_length": 25
}
},
 "tamaño": 229,
 "versión": 1
}

y serializado tx con el txin 0 script reemplazado con la siguiente secuencia de comandos:

OP_TRUE
OP_PUSHDATA0(65)
042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf
OP_TRUE
OP_CHECKMULTISIG

en realidad debería ser:

0100000001c8cc2b56525e734ff63a13bc6ad06a9e5664df8c67632253a8e36017aee3ee4000000000455141042f90074d7a5bf30c72cf3a8dfd1381bdbd30407010e878f3a11269d5f74a58788505cdca22ea6eab7cfb40dc0e07aba200424ab0d79122a653ad0c7ec9896bdf51aefeffffff0120f40e00000000001976a9141d30342095961d951d306845ef98ac08474b36a088aca727040001000000

sólo el final de 8 bytes que contienen la locktime son diferentes a los de antes: a727040001000000

la nueva serie tx tiene hash:

607789be41392e6b12735a79bc9ea94573b4e39948badef18ca48e85ee15196d

y la firma y la clave pública desde antes ya estaban en lo correcto. estos evalúan correctamente en pybitcointools ahora, así:

pybitcointools.ecdsa_raw_verify(tx_hash, pybitcointools.der_decode_sig(bin2hex(firma)), bin2hex(clave pública))
+580
mxmlnkn 21 nov. 2014 17:11:39

Este valor de salida se corresponde con el límite de polvo que se impone en las transacciones de bitcoin.

Muchas de estas salidas puede haber sido generado como un polvo ataque de mantener en el anonimato a los usuarios/ direcciones.

+562
merab 23 jul. 2018 1:04:43

¿Cuáles son los principales principios y/o patrones de los programadores deben solicitar su código para hacer sus programas a prueba de balas hacia la maleabilidad de transacciones ataques?

+550
XOMA1589 27 may. 2010 5:27:47

Es seguro en la misma forma que las claves privadas que sí son seguras; el espacio de búsqueda es tan enorme que la probabilidad de que alguien de la generación de una clave privada o de la semilla que alguien más está usando es muy pequeño, así como a ser prácticamente imposible.

Nada protege a alguien de la generación de cientos de miles de llaves y cientos de miles de semillas de frases y ver si alguno de ellos tiene Bitcoin asociados con ellos. Pero dado que el espacio de búsqueda es tan enorme, que la persona tendría una casi 0 probabilidad de encontrar una clave que alguien ha utilizado. Incluso si no que generan un millón de claves por segundo (ya sea al azar o a través de semillas de frases), esa persona tendría básicamente un 0 probabilidad de encontrar a alguien que la clave privada, incluso si ellos buscaron hasta que el calor de la muerte del universo.

La última parte es la más simple, la validación se realiza en línea, cómo una cartera de verificación de las palabras de abrir la clave privada si se puede trabajar sin conexión a internet?

Que no es la forma de Bitcoin funciona. No hay ninguna validación de cualquier tipo con las claves privadas. No hay necesidad de "validar" las claves privadas o registro de ellos en cualquier lugar o similares.

+526
Vesa 24 may. 2019 10:19:35

¿El Merkle hash árbol siempre tiene que ser un árbol binario? Si no, entonces ¿cuáles serán las ventajas si es ternario, terciario...o cualquier otra cosa?

+405
Godswilldice 12 jul. 2014 4:38:30

Yo no soy un abogado o un contador especializado en impuestos, de modo que usted puede tomar mi respuesta por lo que vale.

Su pregunta equivale a, si que me dio mi amigo en la India de DÓLARES, tendría que pagar Impuestos sobre Ganancias de Capital si el valor de la divisa norteamericana subió, o, si me dio mi amigo en la India algunos cacahuetes, tendría que pagar Impuestos sobre Ganancias de Capital si el valor de los cacahuetes subió.

Así, la respuesta es no, no CGT en lo que regaló (a menos que si por algún extraño capricho NOS de ley requiere el pago de la CGT en la propiedad ya ha dado de distancia de todos modos, si el valor de la propiedad aumenta?)

En Australia, por lo general, la CGT es sólo paga cuando el beneficio que se toma, es decir, cuando la propiedad se vende a un valor mayor que el que fue adquirido. No sé de que existen leyes específicas en Australia por la CGT para ser pagaderos en divisas, como BTC se ve similar a la de moneda extranjera aquí, aunque creo que todavía tiene que declarar los ingresos de las ganancias y pagar la correspondiente tasa marginal de impuesto sobre la renta de eso.

+374
Bynjashca 29 oct. 2012 18:43:35

Sí. si establece server=1 en el bitcoin.conf archivo de su cartera va a ejecutar un servidor que escucha y acepta comandos pasado. Estos pueden ser utilizados externamente control de la cartera. Por defecto, sólo las peticiones de su máquina local son aceptadas. JSON es el lenguaje de formateo de los comandos emitidos en. JSON_RPC es una forma estandarizada de la emisión de estos comandos utilizando el formato json. Cuando se ejecuta el cliente puede utilizar la Consola disponible desde el menú de ayuda para ejecutar el mismo conjunto de comandos directamente. Como las personas mencionadas ha sido bastante tiempo desde su estado práctico utilizar el cliente como un minero.

+254
Elite Male Extra 11 feb. 2012 14:05:38

De acuerdo a este artículo: (https://medium.com/@avivzohar/the-spectre-protocol-7dbbebb707b5escrito por uno de Spectre del autor (Aviv Zohar), se menciona que el Espectro ha débil liveness.

¿Cuál es la razón de mencionar a los"débiles" para liveness ?

Y de acuerdo a esto, podemos definir una "fuerte liveness" ?

+178
Dr Bob 30 jun. 2015 20:03:15

sobre la mencionada página web, os aconsejo leer esta larga discusión sobre : https://bitcointalk.org/index.php?topic=341659.0

sobre los grifos de los sistemas de

Bitcoin grifos son un sistema de recompensas, en la forma de un sitio web o aplicación, que prescinde de las recompensas en forma de un satoshi, que es una centésima de una millonésima parte de la BTC, para los visitantes a reclamo, a cambio de completar una captcha o tarea, como se describe por el sitio web.

propósito :

  • Para introducir a los usuarios de bitcoin
  • Para conseguir tráfico
  • Para hacer dinero

Además, en la testnet los grifos son inútiles bitcoins distribuido con fines de prueba.

+160
3fold 7 feb. 2016 7:04:24

He creado dos bitcoind servicio en mi servidor. Primero utilizando la configuración predeterminada, y en segundo lugar el uso de la nueva configuración. Soy capaz de dejar de primer bitcoind el uso de bitcoin-cli parada, pero el segundo bitcoind todavía en funcionamiento. La forma más segura de detener el segundo bitcoind , sin forzar a matar ?

+138
Jerkle Berry 2 ago. 2017 20:37:20

Blockchain.info definitivamente tiene un cliente instalado en sus servidores, que es donde se consigue de todo el bloque de datos. He oído que estás usando un tenedor de BitcoinJ.

En el Bitcoin-qt demonio, usted puede conseguir la dificultad de la última cuadra con la getdifficulty comando, y usted puede obtener la información completa acerca de cada bloque, incluyendo la dificultad, con getblock.

+77
user8345 28 ago. 2010 19:56:47

Hay un par de aspectos diferentes a su pregunta.

Cómo evitar perder accidentalmente monedas?

Usted necesita tener seguro y fiable de copias de seguridad de su cartera de claves privadas. Dependiendo de la cartera que usted usa, esto podría ser un archivo (por ejemplo, la cartera.dat), una tecla de acceso frase, o algún otro tipo de información. Asegúrese de que usted sabe lo que usted está almacenando y cómo utilizarlo para recuperar su cartera. En particular, almacenar direcciones no es suficiente. Si es posible, la práctica de la copia de seguridad y restaurar el procedimiento, incluso si usted tiene que hacer algunas transacciones innecesarias (y a pagar las cuotas).

Mantener las copias de seguridad en un lugar seguro, tal vez en varias copias, por lo que no hay un único previsible desastre puede destruir a todos ellos. Además, las copias de seguridad no deben ser accesibles por cualquier persona que no sea de confianza, o que esa persona podría robar sus monedas (ver más abajo). Usted podría cifrar las copias de seguridad, pero entonces usted necesita para averiguar cómo usted, asegúrese de recordar la clave de cifrado o la frase de contraseña.

Usted puede guardar sus monedas con algún intercambio o de proveedores de internet (Coinbase, etc), pero esto conlleva riesgos: se puede ir a la quiebra o a perder sus monedas debido a los errores, fraude, robo o accidente.

Cómo evitar que las monedas robadas?

Tenemos otra pregunta acerca de esto: ¿Cómo puedo mantener mi billetera segura?

Usted tiene que asegurarse de que nadie nunca tiene acceso a sus claves privadas. Si los guarda en el ordenador, teléfono o cualquier otro dispositivo que normalmente se utilizan para trabajar con Bitcoin, asegúrese de tener en cuenta la posibilidad de que el dispositivo pierda o sea robado o hackeado. El uso de cualquiera de cifrado o de otros mecanismos de protección son proporcionados por su cartera de software o sistema operativo. El uso de las buenas prácticas de seguridad en general; evitar la instalación de software desconocido o visitar sitios web desconocidos, y mantenerse al día con las actualizaciones de seguridad.

Usted puede también guardar algunos de sus monedas fuera de línea, en un papel de la cartera o sin conexión de un dispositivo USB. Usted necesita para asegurarse de que esta se almacena en un lugar seguro, donde nadie puede llegar a ella, y asegúrese de tener copias de seguridad en caso de que sea destruido accidentalmente.

Cómo evitar que las monedas de perder valor?

Usted no puede. El precio de Bitcoin seguirá fluctuando. La única forma de "bloquear" sus ganancias es vender algunas o todas las monedas (o realizar algún tipo de exóticos de cobertura que equivale a la misma cosa). Esto significa que usted no se beneficiará (como mucho) si el valor sube más tarde; usted no puede tener las dos formas.

+75
LeftyGlick36 27 oct. 2011 23:38:33

La gente dice que no es posible apagar el bloque de cadena, pero más que miro en el tema no importa cuánta tecnología tiene detrás de su bloque de la cadena no tiene que ser un punto de entrada de la I. E para el nodo maestro con un dedicado I. P de la dirección. Si este es el caso, entonces ¿no es posible apagarlo? ¿No sería un simple hecho de bloqueo de la ip como se ha hecho durante tanto tiempo en otros países?

Que es totalmente incorrecta. No hay ningún nodo maestro ni existe una fuente central que dicta lo que el blockchain es. El blockchain es distribuido a todos los nodos, y todos los nodos actualizar su copia local de la blockchain de acuerdo con el consenso de las reglas que el nodo siguiente. Si todo el mundo está siguiendo el mismo consenso reglas, entonces todos convergen en el uso de la misma blockchain. Sin embargo, hay algunas circunstancias en las que un nodo no use la misma blockchain como todos los otros nodos, pero estos solamente ocurre cuando el nodo está bajo ataque.

Prueba De Trabajo: entiendo que tiene que haber algún tipo de forma de demostrar el origen de la información provino de un determinado contribuyente nodo. Sin embargo, no estoy totalmente de entender el punto de que el PRISIONERO de guerra. Por ejemplo, si hay 100 bloque de nodos conectados a varios nodos principales, a continuación, la información que pueda ser procesada por cada nodo que sería emitida por cada uno de los nodos a los nodos maestros que luego del proceso de los nodos principales para su inserción en el libro de contabilidad, la correcta??? Si ese es el caso, entonces ¿cuál es el punto del POW/de Alta potencia de las características del equipo, etc?? no es sólo el uso de recursos del pc con el algoritmo??? no hay nay otra manera más eficiente de hacer esto. Suena como un trabajo que cualquier medio de la computadora podría hacer en este día y edad, sin tener un máximo de la CPU, etc. Esto es algo que no estoy entendiendo.

De nuevo, no hay ningún nodo maestro que inserta las cosas en el blockchain.

La prueba de que el trabajo es algo que se hace por los mineros para demostrar que una cierta cantidad de trabajo fue hecho para producir este bloque. Esto asegura la blockchain porque los nodos se utiliza un blockchain que tiene la mayoría de la prueba de trabajo y es válido en virtud de sus otros consenso de normas. Esto significa que si un atacante quiso defraudar a alguien por convencer a sus nodo que un blockchain eran los verdaderos blockchain, entonces habría que hacer la misma cantidad de trabajo que se ha hecho en el real blockchain. En ese punto, sería mucho más rentable para simplemente ser un real minero en lugar de maliciosamente atacar a alguien como el costo de hacer que la cantidad de trabajo es muy alta.

+27
maxsochi2 28 nov. 2011 0:29:35

He escuchado un poco acerca de Bitcoin y las personas que ganan dinero. ¿Cómo inicio mi Bitcoin. Soy muy nuevo en esto.

+21
MotoYulya 22 ago. 2018 19:47:13

Mostrar preguntas con etiqueta