No es la "maleable transacción" ataque frustrado por el sentido común?

Estoy tratando de comprender la maleabilidad de transacciones ataque, como a mí me parece que sólo una vez por descuido del operador sería vulnerable en primer lugar, como se describe a continuación.


Principalmente para aclarar mis propios pensamientos, permítanme describir el ataque como yo la entiendo. Dramatis personae: Alice es el atacante, y Bob es un "banquero" (cambio de operador, web de la cartera; alguien que es la celebración de monedas en cuenta para Alice.)

Alice: Hola Bob, tengo 1 BTC en mi cuenta y me gustaría que la retire. Por favor, envíela a la dirección de 1Alice1.

Bob: Bueno, he generado una transacción, su hash es 123abc. He publicado en la red p2p. Se pasa la salida 3 del estado de la transacción 987def y envía 1 BTC a 1Alice1. Su cuenta ha sido cargada por 1 BTC y su nuevo saldo es 0.

Alice: Gracias, veo la transacción. Voy a esperar a que se confirme.

Ahora Alice construye un "mutante" de la transacción, con el mismo efecto como 123abc, todavía pasa la salida 3 de 987def y envía 1 BTC a 1Alice1, y la firma todavía verifica, pero el mutante tiene un valor hash diferente 456bca. De alguna manera, Alice recibe 456bca en el blockchain, en lugar de 123abc. Tal vez ella simplemente mejor conectados en la red p2p de Bob es, o tal vez ella sobornos Polly, una de minería de operario de piscina, para dar prioridad a 456bca. Desde 123abc conflictos con 456bca, 123abc nunca se confirmó.

Algunos que pasa el tiempo.

Alice: Oye Bob, recuerde que 1 BTC se suponía que iba a conseguir? La transacción nunca se confirmó.

Bob: me permiten comprobar. Sí, yo veo, no hay ninguna transacción como 123abc en el blockchain. Bueno, supongo que nunca consiguió sus monedas; lo siento. Voy a la reacreditación de su cuenta; su nuevo saldo es de 1 BTC.

Alice: Gracias. Ahora que tengo 1 BTC en mi cuenta, me gustaría probar de nuevo para retirar. Enviar a 1Alice2.

Bob: Bueno, he generado una transacción, su hash es 246fed. He publicado en la red p2p. Se pasa de salida 7 del estado de la transacción 369dbc. Su cuenta ha sido cargado y tiene saldo de 0 de nuevo.

Transacción 246fed es confirmado normalmente.

Alice: Gotcha, Bob! Su original de la transacción se realizó a través de después de todo, sólo en forma mutante como 456bca. Ahora que tengo tanto de ti como de la nueva transacción, y acabo de robo de 1 BTC de usted. Mwa ha ha!

Bob: Oh, ¡ay de mí!


Sin embargo, parece ser que este ataque requiere bastante descuidado teneduría de libros sobre Bob parte. Incluso si Bob no tiene idea de que hay tal cosa como una formula de transacción, él sabe que genera 123abc y ponerlo en la red, y por todo lo que él sabe que todavía está flotando por ahí. Así que yo creo que antes de recrediting de Alicia en cuenta, el sentido común dicta que Bob asegurar que 123abc no puede ser confirmado en alguna fecha futura, tal vez por hacer una nueva transacción (963dad) que gasta la misma entrada (trans 987def de salida 3) a uno de sus propios direcciones (1Bob1), y a la espera de 963dad para confirmar. Por supuesto, en el escenario actual, 963dad nunca va a confirmar (porque 456bca que lo sustituye), y Bob conseguirá finalmente cansado de esperar y seguir investigando.

O, alternativamente, cuando Alice le pide retirar 1 BTC por segunda vez, Bob nueva transacción (678bbb) a Alice de nuevo debe pasar la misma entrada (987def:3), asegurándose de que Alice no puede conseguir de alguna manera 123abc confirmó más tarde. Esto previene el ataque también, porque 678bbb ha sido invalidado por 456bca.

Además, desde que Alice mutante transacción 456bca hizo, de hecho, pasar de Bob entrada (987def:3), no debería de Bob software de cliente le informará de que esta entrada no está disponible para él, y ajustar su equilibrio en consecuencia? Bob aparentemente cree 123abc fracasó y se controla que de entrada, y por lo tanto este debe lanzar sus libros fuera de balance y alerta de lo que algo está mal.

Mi entendimiento es que el Bobs del mundo han respondido a la cuestión al quejarse de que "maleable" transacciones son un oscuro protocolo de error que no se podía haber esperado para anticipar. Si eso es cierto o no, me parece que en fin han sido vulnerables, Bob prácticas contables ya tenía que ser negligente, así que realmente no tiene defensa de cualquier manera.

O, si Bob vio las banderas rojas, pero no pudo comprender la situación, y acreditado de Alice cuenta de todos modos en los intereses de servicio al cliente, es todavía difícil sentir mucha simpatía por él.

Esta cuenta exactos, o he perdido algunos detalles cruciales?

Gracias, y perdón por la longitud.

+431
mikihisa 18 ene. 2014 5:38:23
25 respuestas

Es un esquema Ponzi. Dejar de cagarla la vida de las personas.

No va a ser verdaderos perdedores real pronto.

  • No hay modelo de negocio.
  • No hay moneda de minería de datos.
  • Nuevo miembro, el dinero se utiliza para pagar las comisiones.
  • Cuando los nuevos miembros se secan, entonces, de dónde vas a generar ingresos a partir de?
  • Nadie, es decir, no un comerciante, es la aceptación de Onecoin.

Estúpido plan.

+991
Mohnish M 03 февр. '09 в 4:24

Solo estoy de nuevo para Bitcoin y me gustaría saber lo que es un "Verde de verificación de dirección" es, tengo una electrum cartera de ver 3.3.6 y creo que es utilizado para transacciones más rápidas, pero no estoy seguro de que cualquier información. sería apreciada.

+925
Carol Hahn 24 nov. 2013 22:23:32

Puede colocar el cursor sobre la linea de "indicador" para ver el número de compañeros.

Sólo debe tomar unos segundos para encontrar más compañeros. Esto es dependiente de la de la red Bitcoin, aunque. Usted puede forzar MultiBit para intentar conectarse a un nuevo conjunto de compañeros que reiniciarlo.

+917
Matthew Swart 13 nov. 2015 21:59:15

Sin embargo, otra manera de proceder es hacer su propio cliente.

Aquí está el mío en PHP. Incluso si usted no sabe de PHP, usted puede ver lo fácil que es crear una desde cero:

JSONRPC:
https://github.com/nmmmnu/BlockchainWalker/blob/master/jsonrpc.php

Seleccionado Bitcoind comandos que necesito:
https://github.com/nmmmnu/BlockchainWalker/blob/master/bitcoindrpc.php

actualización:

En el caso de que el propio cliente, asegúrese de que la manija de la primera transacción

"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"

en código especial, porque bitcoind no puede manejar.

+886
Snou 1 sept. 2017 21:39:31

Estoy creando una hoja de cálculo para rastrear total de bitcoins en circulación desde el día 1. Este sería agregar cada Bitcoin por día de crear y añadir a la acumulación total. Por ejemplo, si elegimos cualquier día podríamos entonces ver lo que la cantidad total de Bitcoins fue creado. Si elegimos el 1 de enero de 2014 podríamos decir que el total de Bitcoins minados es igual a X. Si tomamos el día de hoy (3 de junio de 2019) podríamos decir que el total de Bitcoins minados es igual a X. Por definición, que también significaría que podríamos calcular cuántos Bitcoins se dejan para ser extraído en cualquier día dado. Podría alguno que me ayude a encontrar el camino para crear una hoja de cálculo? Gracias.

+859
Jester87 30 abr. 2014 7:18:40

He estado usando el bitcoin-biblioteca de python para hacer los pagos desde dentro de Python. Esto funcionó bastante simple:

>>> importar bitcoinrpc
>>> conn = bitcoinrpc.connect_to_local()
>>> conn.sendtoaddress('bitcoin_address_here', 0.5)

El archivo Léame de la biblioteca ahora dice que no se mantiene y se refiere a la python-bitcoinlib como un sucesor. Así que ahora estoy tratando de envolver mi cabeza alrededor de esa lib, pero parece ser un poco más difícil de lo que bitcoin-python que solía ser. Ahora entiendo que me puedo conectar a la ejecución de bitcoind usando el siguiente código:

>>> importar bitcoin.rpc rpc
>>> proxy = rpc.Proxy()
>>> proxy.getinfo()
{u'connections': 36, u'errors': u", u'blocks': 295646, u'paytxfee': 0, u'keypoololdest': 1394108331, u'walletversion': 60000, u'difficulty': Decimal('6119726
089.12814713'), u'testnet': False, u'version': 90100, u'proxy': u", u'protocolversion': 70002, u'timeoffset': -1, u'balance': 1856000, u'keypoolsize': 101}

Hasta ahora tan bueno. El problema ahora es que no tengo idea de cómo puedo hacer un solo pago. Veo que hay una función llamada proxy.sendrawtransaction(self, tx), que al parecer lleva un raw de la transacción como un argumento. No tengo idea de cómo crear un raw de la transacción a pesar de que, además, me sería de esperar que exista algún tipo de send_to_address(dirección, cantidad) disponible, pero no puedo encontrar alrededor de la biblioteca.

Así que ¿alguien sabe cómo puedo enviar un simple transacción a una dirección con el python-bitcoinlib? Todos los consejos son bienvenidos!

+836
Luu 22 sept. 2018 15:16:47

Dada una clave privada: 3cd0560f5b27591916c643a0b7aa69d03839380a738d2e912990dcc573715d2c, Y un tx hash: 456f9e1b6184d770f1a240da9a3c4458e55b6b4ba2244dd21404db30b3131b94, me gustaría firmar, el uso de SSL y PHP. La conversión de la clave privada a un formato pem (así SSL puede utilizar), puedo generar la siguiente cadena base64: PNBWD1snWRkWxkOgt6pp0Dg5OApzjS6Rkzdcxxnxxsw=. Tan válido formato pem debe ser:

-----BEGIN CE CLAVE PRIVADA----- PNBWD1snWRkWxkOgt6pp0Dg5OApzjS6Rkzdcxxnxxsw= -----FIN DE LA CE CLAVE PRIVADA-----

Sin embargo, no parece estar funcionando. Estoy usando la siguiente función: openssl_sign($hash, $firma $private_key, OPENSSL_ALGO_SHA256).

Pero cuando voy a generar un azar de la clave privada mediante el uso de SSL, por ejemplo: -----BEGIN CE CLAVE PRIVADA----- MHcCAQEEINhhp8dYz31X+KWq3u/gutJthvW2puUbB9AOIul/v2SOoAoGCCqGSM49 AwEHoUQDQgAE0jE7TIszCklw//SGyYW0+z38PUxwfkip9WS4UUn68f7D78D6ZQ/S dlPisC1fQZrUrFrik/wq7E4Xwrqs3n3b5w== -----FIN DE LA CE CLAVE PRIVADA-----

La función de trabajo. Lo que está mal con el formato pem que estoy generando el uso de una clave privada existente?

+796
Ameen Akbar 26 ene. 2010 0:13:16

El proyecto es esencialmente en una fase beta. Las personas que corren el cliente Bitcoin ahora son normalmente muy técnica, los primeros usuarios que van a construir el siguiente nivel de software y servicios en la parte superior de la básica protocolo Bitcoin. Los servicios (intercambios, bancos, pasarelas de pago, los clientes ligeros, redes de confianza, lavanderías, ...) son de lo ordinario, los usuarios finales podrán adoptar en masa.

Así que creo que la respuesta es no: el Bitcoin, Satoshi cliente nunca va a venir con el blockchain incluido, simplemente porque el público objetivo no son el tipo de usuarios finales que encontrar una gran descarga inicial de un problema.

+761
Znatz 22 jul. 2013 13:02:41

Viendo como esta pregunta sigue sin respuesta después de un par de meses...

Usted tendrá que activar txindex = 1 en el bitcoin.conf por @Janes' sugerencia. Si desea escanear tu descargado blockchain para otra cartera de la dirección de historial de transacciones, entonces usted tiene que construir la totalidad de la blockchain índice en su máquina.

Si se trata de un reloj de direcciones sólo o no debería ser irrelevante.

¿Cuáles son los pros y los contras de txindex opción?

No-cartera de las transacciones con bitcoin rpc (gettransaction)

ACTUALIZACIÓN

Yo creo que puede haber solucionado su problema

Este es mi Bitcoin info

$ bitcoin-cli getinfo
{
 "versión" : 110200,
 "protocolversion" : 70002,
 "walletversion" : 60000,
 "equilibrio" : 0.00000000,
 "bloques" : 353776,
 "timeoffset" : -1,
 "conexiones" : 55,
 "proxy" : "",
 "dificultad" : 47610564513.47126007,
 "testnet" : false,
 "keypoololdest" : 1449210293,
 "keypoolsize" : 101,
 "paytxfee" : 0.00000000,
 "relayfee" : 0.00005000,
 los "errores" : ""
}

Mi blockchain no está tan actualizada como la tuya, así que se reunieron esta transacción (dentro del bloque 353776) y utiliza la dirección Bitcoin de 1CTVqQSSVTjun32gRxmhJHhVYzzXpR894z de la transacción para mi ejemplo.

# Importación de dirección SIN necesidad de volver a examinar; vamos a hacer esta tarde
bitcoin-cli importaddress 1CTVqQSSVTjun32gRxmhJHhVYzzXpR894z "Prueba de Índice de" falso

# Dejar De Bitcoin
$ bitcoin-cli parada

# Verificar Bitcoin se detiene, a continuación, ejecute:
$ bitcoind -rescan

# Esperar para volver a examinar... mina tomó 15-20 minutos

# Una vez 'bitcoin-cli getinfo' devuelve la validez de la información, ejecutar:
$ bitcoin-cli listtransactions "Índice de la Prueba" 10 0 verdadero

# Resultado:

[
{
 "involvesWatchonly" : true,
 "cuenta" : "Índice de la Prueba",
 "address" : "1CTVqQSSVTjun32gRxmhJHhVYzzXpR894z",
 "categoría" : "recibir",
 "cantidad" : 3.50000000,
 "vsal" : 0,
 "confirmaciones" : 22539,
 "blockhash" : "00000000000000000548d8ef9a7d14c75b7b18ae5b792d520f44cc5ddd25adfe",
 "blockindex" : 536,
 "blocktime" : 1416848183,
 "txid" : "1db7b0703f441d4cea63a298131f8e766b557329f44c30898847d0fc23573606",
 "walletconflicts" : [
],
 "el tiempo" : 1452652576,
 "timereceived" : 1453438387
},
{
 "involvesWatchonly" : true,
 "cuenta" : "Índice de la Prueba",
 "address" : "1CTVqQSSVTjun32gRxmhJHhVYzzXpR894z",
 "categoría" : "recibir",
 "cantidad" : 1.89990000,
 "vsal" : 1,
 "confirmaciones" : 19031,
 "blockhash" : "0000000000000000134345f88fb68550d2102d392be6e1635eaa6fb50c37a2cc",
 "blockindex" : 15,
 "blocktime" : 1418994502,
 "txid" : "4cc761b286c23dab5dd07c260726d79e4baee88778a402e36c82a6b9e6ac757f",
 "walletconflicts" : [
],
 "el tiempo" : 1452652576,
 "timereceived" : 1453438430
},
...
snip
...
{
 "involvesWatchonly" : true,
 "cuenta" : "Índice de la Prueba",
 "address" : "1CTVqQSSVTjun32gRxmhJHhVYzzXpR894z",
 "categoría" : "recibir",
 "cantidad" : 13.63000000,
 "vsal" : 0,
 "confirmaciones" : 211,
 "blockhash" : "0000000000000000021df02390f30985f34d871e4cc93c4e349cd3b23574bf76",
 "blockindex" : 1,
 "blocktime" : 1430041109,
 "txid" : "64540e42ec96118d11168d954641dd5390f4a46ba795c7b7588d38141e66117a",
 "walletconflicts" : [
],
 "el tiempo" : 1452652576,
 "timereceived" : 1453438694
}
]

Como se puede ver, la última transacción para mostrar en la salida es con la que me agarró de bloque 353776, con todos los datos correctos, como se muestra en blockchain.info, indicando una transacción exitosa listado para la importación de dirección (cuenta con la dirección, en realidad).

En cuanto a por qué su rescan no funciona cuando usted inicialmente importado la dirección, realmente no puedo decir. Tal vez una más avezado usuario de Bitcoin podría arrojar algo de luz sobre eso.

En este punto, recomiendo dejar su Bitcoin demonio y ejecutar bitcoind -rescan y esperar a que haga su magia. Después de probar su listtransactions de nuevo. Estoy interesado en saber si funciona para usted.

Tenga en cuenta que el intento de importar una dirección Bitcoin que ya existe dentro de su monedero no iniciar una nueva búsqueda, incluso si se especifica para ello en la línea de comandos. --- https://bitcoin.org/en/developer-reference#importaddress

+676
user25813 23 mar. 2014 9:39:25

Una característica especial llamado Blockchain Reducción se supone que para resolver este problema.

Cada año (o un mes) un nuevo génesis bloque ("rolling génesis bloque") será generado por cada nodo. Este bloque contiene solamente información real (por ejemplo, sólo un depósito de la transacción en lugar de cientos de ellos).

Blockchain Reducción requiere otras características para ser implementado también en Proveedores de Servicios y de Almacenamiento Distribuido. Estas características son necesarias debido a que los nuevos nodos pueden necesitar para asegurarse de que un determinado rolling génesis bloque es legítimo. Esto se hará mediante la descarga y análisis de todos (o algunos) blockchains que existía antes de la más reciente de la reducción. Por favor, tenga en cuenta que tales blockchains se almacenará sólo en algunos nodos que se decidió a hacerlo (que recibirá los pagos adicionales para la prestación de este servicio). Todavía hay una posibilidad de que ninguno de los nodos se va a almacenar la información antigua, en este caso Nxt no podía ser llamado "100% trustless".

+658
Dragouf 6 oct. 2011 23:43:42

(Copiado de reddit)

Hey. Recientemente hice una transacción bitcoin por primera vez en un tiempo. Los costos de transacción han ido por las nubes (!!) desde la última vez que lo usé, y pensé que no habría ningún problema para utilizar el valor predeterminado de la cuota en mi electrum en la cartera (104 sat/byte).

Ahora me doy cuenta de que esto fue un gran error. Mi transacción está atascado en mempool y no sé qué hacer al respecto.

¿Qué debo hacer? ¿Cuánto tiempo de las transacciones de estancia en mempool antes de que no son considerados "enviado" más y me puede pasar los bitcoins en otra transacción? Es allí una manera de retroactivamente adjuntar una mayor cuota de transacción para mi transacción?

Agradecería cualquier ayuda con esto. Tener su dinero atrapado en el limbo digital chupa.

+554
Mohammad Ganji 7 mar. 2011 7:31:28

Posibles Duplicados:
¿Qué es TxIn de la secuencia?

¿Cuáles son las condiciones lógicas que me requieren para cambiar un número de secuencia?

Supongamos que existe esta transacción

 txid: abcdefghi... secuencia:1 entrada:1someVanityName de salida:1otherVanityName ...

... y las personas que mutuamente creado este TX decide revisar alguna información. Tal vez cambiar la cantidad o duración del bloqueo. Desde un tx número va a cambiar una vez que la secuencia # cambios, (o cualquier cambio, para el caso) cuando debería, lógicamente, cambia el número de secuencia?

  • ...cuando yo cambie la cantidad o duración del bloqueo?

  • ...cuando puedo cambiar el script de salida?

  • ...cuando puedo agregar / eliminar direcciones desde la entrada de la parte de la tx?

  • ...cuando puedo agregar / eliminar direcciones de la salida de parte de la tx?

Con el tiempo me podrá modificar la transacción en una forma que no tiene ningún parecido con la original tx... y puede aplicarse a todo un conjunto de circunstancias diferentes.

Cuando debería incrementar el número de secuencia de frente a la creación de un nuevo tx?

+553
whiteus 12 mar. 2019 0:35:34

En caso de que ambos tienen la clave privada alguno de ustedes puede transferir btc dentro de esa cartera para probar su owenership sólo puede firmar todos los utxos y transferencia de los btc a algunos seguro de la cuenta cuya clave privada es conocido sólo a usted.

+541
seoyoochan 5 nov. 2010 16:29:32

Me gustaría añadir mi propia respuesta y la observación de que Alin Tomescu la respuesta de hace un buen trabajo de explicar el problema de la prueba de trabajo resuelve, por lo que no voy a entrar en esos detalles.

El concepto de describir podría trabajar. El problema es que no tiene sentido utilizar una blockchain para ello. Desde su concepto requiere confianza en el emisor original no hay ninguna razón para que un blockchain de existir. El punto de una blockchain es proporcionar un trustless, públicamente verificables y distribuido de contabilidad de las transacciones. Como cada bloque se agrega a la blockchain sin un consenso algoritmo como el de la prueba de trabajo de minería de datos donde los mineros tienen incentivos para no reescribir las transacciones, ¿cómo funciona la red de decidir que blockchains son correctas? Por ejemplo, si me conecto a uno de los nodos en la red lo que es dejar que el nodo de la alimentación de mí una versión incorrecta de la blockchain (en la que no pase lo del voto)? La única manera creo que esto puede funcionar es si el emisor original señales de cada bloque con su clave privada con la que el público puede, a continuación, compruebe que es correcta.

El concepto se podría describir fácilmente y mucho más que simplemente ser implementado utilizando una base de datos central (se puede hacer públicamente accesible así) donde se registro el firmado votos de sus miembros en una tabla en otra tabla los miembros pueden transferencia de votos a otros miembros mediante su voto a firmar la transacción. En este caso, es la autoridad de certificación que emite el voto certificados a sus miembros. Usted y el público puede comprobar los votos en la base de datos con una cadena de certificados, que se pondrá a disposición del público. Esto permite que los votantes individuales permanecer en el anonimato en sus decisiones respecto a las votaciones, pero todavía verificable de que sus votos fueron hechas con un certificado firmado por la autoridad central (el de la persona con la que estamos obligados a confiar). El uso de una base de datos central que también evita el problema de no saber que cadena es correcta.

Básicamente, haciendo uso de una blockchain y la eliminación de la trustless factor se puede trabajar, pero es más lento y completamente excesivo para el trabajo. Si usted no necesita un trustless sistema, luego simplemente utilizar las herramientas eficaces ya hemos construido para redes de confianza.

Realmente espero que yo he entendido bien su pregunta y han proporcionado una respuesta útil.

+474
sordid 30 jul. 2011 7:31:59

Soy nuevo en bitcoin, solo quiero devolver json scrutucture a partir de las últimas transacciones de vez en cuando.

Yo no podía entender por buscar su referencia, creo que se requiere un nivel de conocimiento en bitcoin no tengo todavía.

Yo sólo quería volver plain vanilla json array

gracias

+410
apple886 29 mar. 2012 12:47:39

F2Pool (junto con la mayoría hoy en día) no ofrecen compartir las dificultades lo suficientemente baja para que la CPU de minería de datos, en este caso, el valor predeterminado es de 1024. Se tendrá en promedio una semana a la mina en una sola cuota en este punto en el tiempo, y va a pagar menos de 100 de Satoshi (0.0000000001 BTC, 0.00000002608 USD) para el tiempo de CPU utilizado. De la CPU, la minería ha sido rentable desde el año 2010 los costos de la energía para hacerlo son muchos órdenes de magnitud superiores a los ingresos que usted puede hacer haciendo.

+405
Cortyx Clarity 11 jul. 2012 22:39:53

Dogecoin no tiene un límite más.

+404
XReevesX 3 dic. 2010 8:47:53

A partir de la página https://en.bitcoin.it/wiki/Protocol_specification , entiendo que el árbol merkle funciona como

merkle([a,b,c,d]) = h( h(a,b), h(c,d) )

Pero cuando hago el estrato protocolo http://mining.bitcoin.cz/stratum-mining/ , funciona algo como esto

merkle([a,b,c,d]) = h(h(h(a,b),c),d)

Y aquí está el código

def build_merkle_root(self, merkle_branch, coinbase_hash_bin):
 merkle_root = coinbase_hash_bin
 para h en el auto.merkle_branch:
 merkle_root = doublesha(merkle_root + binascii.unhexlify(h))
 volver binascii.hexlify(merkle_root)

¿Se me olvida algo?

+370
dhausugail 6 may. 2017 17:03:07

Se puede mentir a usted acerca de los filtros, sí. Sin embargo, debido a los filtros que ser determinista puede consultar otros nodos para los hashes de sus filtros para medir la relativa a la corrección. También puede utilizar una torre de vigilancia como servicio para dar de confianza, con el conjunto de los filtros en algunos casos.

El diseño original del documento incluye una extensión para cometer estos filtros como una regla del consenso. Está diseñado y presentado como "niveles", que puede mejorar la fiabilidad y seguridad de la utilización de lado del cliente de filtrado de esta manera.

El modelo de seguridad de oracle el bloom filter puede ser ampliamente mejorada por que en lugar de cometer un hash de la BFD dentro de cada bloque como un suave- horquilla regla del consenso de cambio. Después de esto, cada nodo en la red construir el filtro y validar que el hash del bloque es correcta, a continuación, hacer una elección consciente de descarte para ahorro de espacio o memoria caché de la los datos en el disco.

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-May/012636.html

+362
Deepak Sisodiya 10 abr. 2017 14:44:51

Porque la minería es cada vez más difícil, y por lo tanto más caro, ahora es rentable debido a que el btc va en aumento, pero ¿qué sucederá cuando btc precio es estable y los mineros no recibirá ninguna recompensa extra, sólo la cuota.
Si la tasa es alta, entonces vamos a terminar en un escenario peor que el actual transacciones con los bancos :(
Es allí cualquier aproximación acerca de este cargo? (En btc, porque no vamos a saber el precio en usd)

EDITAR
pregunta similar (pero demasiado viejo, sin respuesta): De cuánto serán los honorarios de la transacción, finalmente, ser?
Tal vez podría ser una buena aproximación
Cómo muchos BTC son transferidos por día (volumen diario)?: 750.000 BTC (fuente: https://coinmarketcap.com/currencies/bitcoin)
Cómo muchos BTC se extraen (generado como recompensa) todos los días?: 1800 BTC (fuente: https://www.bitcoinblockhalf.com/)
Cuánto se paga en la cuota de cada día?: 34 BTC (fuente: https://blockchain.info/stats)




Así que ahora la tasa es de 34 / 750.000 = 0.0045%
Pero si hemos extraído todo, entonces necesitamos pagar la 1800BTC a los mineros en las cuotas a compensar así será (1800+34) / 750.000 = 0.25%
Si este es el caso creo que es más barato que el actual transacciones bancarias, honorarios...

Pero no estoy seguro de si esto es una aproximación válida, tarifa parece cambiar mucho (no sé por qué ni cómo leer esta gráfica cualquiera): https://bitcoinfees.info/

+357
Kaylee McGinnis 1 dic. 2010 14:22:02

Actualmente estoy haciendo una investigación sobre bitcoin y me gustaría saber si hay de todos modos para replicar un doble gasto en la testnet o regtest? Si no es posible, ¿hay algún otro tipo de "ataques" que se puede replicar?

+211
Aaron Wagner 23 dic. 2016 21:48:39

Este un video que realice hace un par de años sobre cómo obtener bitcoins. Para ser anónima, sólo se necesita un falso/privado dirección de correo electrónico (como uno de protonmail.com). Para ser super anónimo podría utilizar una VPN o inscribirse en un café internet. la vid es una buena introducción en la compra de tus primeros bitcoins.

https://www.youtube.com/watch?v=2r8kVHgjjkE&t=49s

+104
Arjun Raj 17 ene. 2010 14:47:30

Supongamos que la luz cliente quiere recuperar el bloque completo número 1234. He visto en la documentación de la getdata mensaje, que el resto de los nodos puede responder con un mensaje de unidad.

¿Tiene consejos sobre cómo evaluar cuántos bytes de la luz cliente debe enviar para el getdata mensaje y cuántos bytes debe ser recibido?

Depende de lo grande que es el bloque. El bloque es de 0-1 MB antes de segregadas testigo de la activación, y de 0 a 4 MB después. En general, el antes, el bloque es de, al menos, los datos que contiene.

Hay algunos gastos generales para el encabezado del mensaje, pero es de 24 bytes, así que realmente no importa.

+83
Anant Agarwal 20 sept. 2019 6:13:28

Estoy empezando un LiteCoin mmcFE-pushpool piscina para varios clubes en mi universidad, y estoy teniendo algún problema. En primer lugar, estamos ejecutando una instancia de EC2 (Ubuntu), y han mmcFE y recíproca que se ejecuta. Tengo dos cuestiones importantes antes de que podamos empezar esta piscina...

1) En la interfaz web, los usuarios son capaces de crear y de la cuenta de registro y en el bien. En el lado izquierdo, hay un error/aviso de que los estados: Notice: Undefined variable: totalOverallShares en /var/www/includes/leftsidebar.php en la línea 64 también estoy recibiendo Notice: Undefined variable: totalOverallShares en /var/www/includes/leftsidebar.php en la línea 71

2) en Segundo lugar, me fui por delante y se omite el error anterior y decidió correr un CPU minero sólo para poner a prueba las estadísticas. Normalmente puedo pulir (scrypt) a 11kh/s en los demás pueblos de las piscinas. Ha estado funcionando durante aproximadamente 5 horas, y mis estadísticas en el sitio web de decir 0. La tarea se ejecuta cada 2 minutos. El uso del MINERD y nunca llegar a cualquier "acciones presentadas, Sí!" en mi pc....

¿Alguien tiene alguna sugerencia? Realmente estoy perplejo en cuanto a lo que podría ser la celebración de nosotros. Usted puede ver este problema en la página web en http://p2pool.us

{
# puertos de red
"escuchar" : [
 # protocolo binario (por defecto), puerto 8336
 { "puerto" : 8336 },

 # HTTP JSON-RPC, protocolo, puerto 8337
 { "puerto" : 8337, "protocolo" : "http-json" }

],

# configuración de base de datos
"base de datos" : {
 "motor" : "mysql",

 # 'host' por defecto localhost, si no se especifica
 "host" : "127.0.0.1",

 # 'puerto' usos adecuados de puerto predeterminado para el motor de base de datos,
 # si no se especifica
 "puerto" : "3306",

 "nombre" : "sc",
 "nombre de usuario" : "myusername",
 "contraseña" : "mypasswd",
 "sharelog" : true,
 "sentencia.pwdb":"SELECCIONE contraseña DE pool_worker DONDE el nombre de usuario = ?",

 "sentencia.sharelog":"INSERTAR EN acciones (rem_host, nombre de usuario, our_result, upstream_result, la razón, la solución) VALUES (?, ?, ?, $
},

# configuración de la memoria caché
"memcached" : {
 "servidores" : [
 { "host" : "127.0.0.1", "puerto" : 11211 }
]
},
 "servidores" : [
 { "host" : "127.0.0.1", "puerto" : 11211 }
]
},

"pid" : "/tmp/pushpoold.pid",

# anula nombre de host local detección de
"forcehost" : "localhost.localdomain",

"inicio de sesión.las solicitudes" : "/tmp/solicitud.registro",
"inicio de sesión.comparte" : "/tmp/acciones.registro",

# el servidor asume longpolling (w/ SIGUSR1 llama para cada blk)
"longpoll.desactivar" : false,

# longitud de tiempo para la caché de nombre de usuario/contraseña de credenciales, en cuestión de segundos
"auth.cred_cache.caducan" : 75,

# Configuración de RPC
"rpc.url" : "http://127.0.0.1:9332/",
"rpc.usuario" : "usuario",
"rpc.paso" : "pase",

# reescribir devuelve 'objetivo' de la dificultad-1?
"rpc.de destino.reescribir" : true,

# permitir a los clientes a actualizar la ntime campo de su trabajo
"el rollo.ntime.desactivar" : false
}

Lo anterior demuestra mi PUSHPOOLD config. A continuación, es mi litecoind conf:

servidor=1
rpcallowip=127.0.0.1
rpcuser=usuario
rpcpassword=pass
+80
curtis55 7 nov. 2016 17:03:28

Puede publicar simplemente un montón de transacciones con un particular nlocktime. Digamos que quería darle a su hija una pensión de 0.1 BTC/semana durante todo un año. Usted puede crear una transacción con un locktime del próximo lunes, de 0.1 BTC, otra transacción con un locktime del lunes después de que un 0,1 BTC y así sucesivamente durante todo un año. La forma en que bitcoin funciona, ella va a recibir las cantidades de todos los lunes.

En cualquier momento, usted puede crear una transacción a ti mismo para anular algunas o todas las transacciones futuras. Muchas altcoins también tienen esta característica.

Ahora, si quieres una constante cantidad de dólares y no una cantidad de bitcoin, que en realidad va a requerir un servicio. Haciendo que en forma descentralizada va a ser realmente difícil ya que los tipos de cambio, por su naturaleza, tienden a ser centralizada.

He aquí cómo usted puede hacer una nlocktime transacción con el excelente btcd biblioteca en ir:

paquete principal

de importación (
"bytes"
"codificación/hex"
"fmt"

"github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcd/txscript"
"github.com/btcsuite/btcd/wire"
"github.com/btcsuite/btcutil"
)

func main() {

 // Normalmente la clave privada podría venir de cualquier mecanismo de almacenamiento
 // se utiliza, pero para este ejemplo solo duro código.
 wif, err := btcutil.DecodeWIF(
 "<testnet la clave privada en el WIF formato aquí>")
)
 si err != nil {
fmt.Println(err)
volver
}

 comprimido := false

 privKey := wif.PrivKey
 clave pública := privKey.Clave pública()
 serializedPubKey := pubKey.SerializeCompressed()
 si!!!comprimido {
 serializedPubKey = pubKey.SerializeUncompressed()
}
 pubKeyHash := btcutil.Hash160(serializedPubKey)
 addr, err := btcutil.NewAddressPubKeyHash(pubKeyHash,
&chaincfg.TestNet3Params)
 si err != nil {
fmt.Println(err)
volver
}

 txStr, err := hex.DecodeString("<testnet, tx contiene las utxo en hexadecimal aquí>")

 si err != nil {
fmt.Println(err)
volver
}

 rbuf := bytes.NewReader(txStr)
 var originTx de alambre.MsgTx
 err = originTx.Deserialize(rbuf)
 si err != nil {
 fmt.Printf("Deserializar error %v\n", err)
volver
}
 originTxHash := originTx.TxSha()

 // Crear la transacción para canjear el falso transacción.
 redeemTx := alambre.NewMsgTx()

 // Añadir la entrada(s) de la acción redentora de la transacción va a pasar. No hay
 // firma de secuencia de comandos en este punto, ya que no ha sido creado o firmado
 // sin embargo, de ahí nil está prevista para ello.
 prevOut := alambre.NewOutPoint(&originTxHash, 0)
 txIn := alambre.NewTxIn(prevOut, nil)
 txIn.Secuencia = 0
redeemTx.AddTxIn(txIn)

 addr2, err := btcutil.DecodeAddress("<destino testnet addr aquí>",
&chaincfg.TestNet3Params)
 si err != nil {
fmt.Println(err)
volver
}
 pkScript, err := txscript.PayToAddrScript(addr2)
 si err != nil {
fmt.Println(err)
volver
}

 txOut := alambre.NewTxOut(93889960000, pkScript)
redeemTx.AddTxOut(txOut)

 // unix el tiempo de cuando el tx de salida será desbloqueado aquí
 redeemTx.LockTime = 1442802900

 // Signo de la acción redentora de la transacción.
 lookupKey := func(un btcutil.Dirección) (*btcec.PrivateKey, bool, error) {
 // Normalmente esta función implica la búsqueda de seguridad privada
 // clave de la dirección, pero como lo único que se
 // firmado en este ejemplo se utiliza la dirección asociada con la
 // clave privada desde arriba, sólo tiene que volver con el comprimido
 // indicador establecido desde la dirección es el uso de los asociados comprimido
 // clave pública.
//
 // NOTA: Si desea probar el código es en realidad la firma de la
 // transacción correctamente, el comentario de la siguiente línea que
 // intencionalmente devuelve una clave no válida para firmar con el, que en
 // vez, dará como resultado un error durante la ejecución del script
 // cuando la verificación de la firma.
//
 // privKey.D.SetInt64(12345)
 volver privKey, comprimido, nil
}
 // Observe que la secuencia de comandos de base de datos de parámetro es igual a cero aquí, ya que no está
 // se usa. Se debe especificar a la hora de pagar-a-script-hash transacciones son
 // de la firma.
 sigScript, err := txscript.SignTxOutput(&chaincfg.TestNet3Params,
 redeemTx, 0, originTx.TxOut[0].PkScript, txscript.SigHashAll,
 txscript.KeyClosure(lookupKey), nil, nil)
 si err != nil {
fmt.Println(err)
volver
}
 redeemTx.TxIn[0].SignatureScript = sigScript

 var buf bytes.Búfer
 err = redeemTx.Serialize(&buf)
 si err != nil {
 fmt.Printf("Serializar error %v", err)
volver
}

 // Probar que la transacción ha sido válidamente firmado por la ejecución de la
 // script de par.
 banderas := txscript.ScriptBip16 | txscript.ScriptVerifyDERSignatures |
 txscript.ScriptStrictMultiSig |
txscript.ScriptDiscourageUpgradableNops
 vm, err := txscript.NewEngine(originTx.TxOut[0].PkScript, redeemTx, 0,
banderas)
 si err != nil {
fmt.Println(err)
volver
}
 si err := vm.Execute(); err != nil {
fmt.Println(err)
volver
}

 fmt.Printf("Transacción con éxito firmado %v\n", hex.EncodeToString(buf.Bytes()))

}
+38
Azad chouhan 12 sept. 2015 19:36:20

Mostrar preguntas con etiqueta