Por qué estaba inseguro de merkle árbol de aplicación elegido?

A riesgo de crear un "vamos a discutir de política" pregunta, permítanme aclarar que lo que yo quiero saber es si hay un beneficio conocido a Satoshi del "duplicar la última hash" merkle árbol de la implementación en la aparentemente obvia "anexar ceros".

Para aquellos que no saben, el bitcoin merkle algoritmo de árbol permite que los bloques sean mutado si una transacción puede ser duplicado que conducen a CSV-2012-2459.

+364
user650881 29 dic. 2013 0:42:40
29 respuestas

Como se ha señalado por muchos relámpagos desarrolladores en el pasado (por ejemplo, Rusty de 1 millón de canal desafío) el chisme protocolo es bastante ruidoso y una parte de los Pernos de la causante de muchos de los retos de ingeniería.

Hoy, me enteré de que Etereum Raiden red no dispone de un chisme de protocolo. Desde todos los canales de Raiden son inteligentes los contratos que viven en el Etereum blockchain, Raiden nodos se supone que para aprender acerca de la topología de la red, buscando en el Etereum blockchain.

Yo creo que a las operaciones de financiación podría haber sido diseñado para almacenar información sobre los Rayos nodos. ¿Por qué fue que no se hace?

Razones que yo veo:

  • Con nuestro diseño podemos tener los canales privados
  • blockspace es valioso, por lo que no desea almacenar más información en la cadena de lo necesario
  • necesitamos un transporte y el protocolo de comunicación entre los nodos de todos modos, así que ¿por qué no añadir el Chisme protocolo?

Mi sensación es de que debe de haber otras razones para esa decisión de diseño. Entonces, ¿qué me estoy perdiendo?

+987
Alexandr Lihonosov 03 февр. '09 в 4:24

"TL;DR: Bitcoin minería de datos es prácticamente inmune a alguien que ataca con un supercomputador, porque el mercado de la minería ya está inundado con supercomputadoras personalizado y adaptado para el trabajo en el nivel de hardware."
(a través de Cort Amón en los comentarios)


Primero de todo, la dificultad de restablecer sucede después de 2016 bloques. Que sólo después de alrededor de 14 días si el hashrate es estable. Cuando hay un fuerte aumento en la minería, la alimentación de la dificultad será, por tanto, ajustar mucho más rápidamente. El cambio de dificultad está limitado a un factor de cuatro, así por ejemplo, si el hashrate aumentado por un factor de diez (en el inicio de una dificultad período), la dificultad se multiplicaría por un factor de cuatro después de 1,4 días, y luego de nuevo por un factor de 2.5 después de 5,6 días, por lo que se ha ajustado un factor de 10 después de sólo una semana. Dado que el ajuste es una función exponencial, la red puede ajustar de forma similar a saltos aún más grandes. Estás en lo correcto, sin embargo, que si el hashpower a la izquierda en ese punto, la red podría atascarse.

Por suerte, las supercomputadoras no son eficaces en la producción de bloques de Bitcoin. Para bloques de Bitcoin, la única operación que se necesita para ser revolvía sin cesar es un doble algoritmo hash SHA-256. Y eso es exactamente lo que Bitcoin ASIC miner hardware hace, sus fichas tienen el algoritmo implementado en hardware y por lo tanto son exclusivamente diseñado para el cálculo de bloques de Bitcoin. Esto es lo que hace que incluso una sola contemporáneo ASIC más rápido que miles de computadoras.

La ventana de supercomputadoras para apoderarse de Bitcoin minería cerrado algún tiempo, en el 2012 o 2013. Hoy en día, el Bitcoin red produce alrededor de 10 exahashes/s. A mi entender, el más rentable de los mineros vienen en alrededor de $100 por TH/s que se traduce en una magnitud de uno de los millones de DÓLARES invertidos en Bitcoin minería de hardware.

+977
Bethany 4 jun. 2013 12:42:22

La cartera que puedo desarrollar, Coinomi, tiene un núcleo de la biblioteca (basado en java) que podría ser utilizado para alojar a 9 cryptocurrencies en el momento. Las claves privadas se almacenan siempre en el cliente y no en el Electrum los servidores que utiliza para actualizar su estado.

En la actualidad la necesidad de incluir en su proyecto de java, pero es posible crear una API JSON para ser independiente del idioma, sólo se necesita un poco de desarrollo.

https://github.com/Coinomi/coinomi-android

+949
Peter Wang 24 sept. 2014 11:28:41

Hay una lista de bloques codificados en el cliente bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/checkpoints.cpp

Sin embargo, presenta una forma totalmente válida ataque. Si puedo controlar DNS de semillas y DDOS a los demás, podría causar nuevos clientes para que sólo se conecte a mi red.

+940
aps5842 17 sept. 2018 9:02:28

Del mismo modo, ¿cuál es el incentivo para que los molineros para vender harina? Se podría seguir con la harina, cocer el pan, y vender el pan a sí mismos. O ¿por qué el agricultor vender el trigo al molino? Sólo podía molino de él mismo, cocer el pan, y la venden!

La respuesta es que diferentes personas tienen diferentes habilidades y especialidades.

El ASIC fabricantes son buenos en la fabricación de ASICs. También, pueden ser reacios al riesgo, a la espera de que los bitcoins generados vale tanto como la de los ingresos en los dispositivos.

+925
edm 17 abr. 2016 17:37:02

Técnicamente no gana nada hasta que la vende. Así que sólo lo consideran como cualquier otra mercancía:

Empezar con 0 bitcoin y $500

Comprar 0.5 bitcoins por valor de 500$.

Ahora es dueño de 0.5 bitcoin, y $0. Te has intercambiado un elemento, dólares, por otra, bitcoin.

Bitcoin precio sube en relación al dólar.

Ahora es dueño de 0.5 bitcoin, y $0. La cantidad de bitcoin que no ha cambiado, simplemente el valor de la relación a otro elemento.

Vender 0.5 bitcoin por $1.000.

Ahora es dueño de 0 bitcoin, y de $1,000. Eres el comercio de bitcoin por dinero en efectivo, por lo que el valor relativo se determina lo que puede vender, y dado que el valor ha cambiado usted puede cambiar por más que se compró originalmente. Sin embargo, la cantidad de bitcoin no ha cambiado. Sólo su valor.

Así, mientras que el precio de bitcoin se conmueve, que en realidad no significa nada hasta que el comercio de bienes o dinero en efectivo. Una vez hecho eso, dependiendo del precio de venta, usted puede tener un aumento o disminución en la riqueza dependiendo de si el valor del dólar también ha cambiado. Es un intercambio.

No subir o bajar de bitcoin cuando cambia su valor. Simplemente se vuelve más o menos valiosos, y la cantidad que usted mantenga sigue siendo el mismo.

+913
DanGTZ 11 nov. 2011 15:54:24

Yo estoy buscando en la minería, cómo funciona, y cómo empezar. Veo un "minería de dificultad" de muchas fuentes y la lista de una de 3 mil millones de algo número sin unidades.

La dificultad es sólo un valor arbitrario, que no tiene unidad. Una dificultad de 8 bloque es 8 veces más difícil que una dificultad. Hoy en día la dificultad es 3B, pero esta probabilidad sobre una base bisemanal como el hashrate de la red varía.

Por ejemplo, ¿qué pueden hacer predicciones sobre el número de bloques se va a resolver con un 100 Gh/s ASIC en cualquier dificultad?

Se tarda alrededor de 4 mil Millones de intentos para encontrar una dificultad 1 bloque, puede escalar hasta aproximadamente desde aquí. 100 GH significa que el hardware hace 100,000,000,000 los intentos de un segundo, o acerca de una dificultad 1 bloque cada 0,04 segundos. En la práctica, un 100GH máquina puede encontrar un bloque cada 5 años o así, si tienes suerte.

Agrupado de minería de piscinas de recursos para encontrar los bloques más rápido y de dividir los ingresos entre los mineros. Sería promedio de aproximadamente 0,13 BTC por día en el momento, pero es que caiga alrededor de un 2% de un día en el momento y no parece parar en cualquier momento pronto.

Usted no va a hacer ningún ingreso de la minería, nadie, excepto para el primer ASIC propietarios en enero de 2013.

+890
michelle reese 30 jun. 2010 3:41:11

Aquí hay algunas código de python puede aplicar ingeniería inversa

def sumar(p, q):
 si p[0] % P == 0 y p[1] % P == 0:
 volver q
 si p[0] % P == 0 y p[1] % P == 0:
 return p

 si p[0] == p[0] y p[1] == p[1]:
 si p[1] == 0:
 return [0, 0]
 l = (3 * p[0]**2) * modInv((2 * p[1]), P)
 elif p[0] == p[0]:
 return [0, 0]
otra cosa:
 l = (p[1] - p[1]) * modInv((p[0] - p[0]), P)

 x = l**2 - (p[0] + p[0])
 y = l * (p[0] - x) - p[1]
 volver [x % P y % P]


def modInv(n, p):
 volver pow(n, p - 2, p)


#algunas constantes
P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
x = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8


#ejemplo de uso de la función add
g1 = [x, y]
print "g1 =" + hex(g1[0]) + " : "+ hex(g1[1])

g2 = suma([x, y], [x, y])
print "g2 =" + hex(g2[0]) + " : "+ hex(g2[1])

g3 = suma([x, y], g2)
print "g3 =" + hex(g3[0]) + " : "+ hex(g3[1])

g4 = suma(g2, g2)
print "g4 =" + hex(g4[0]) + " : "+ hex(g4[1])
+828
MacMax 13 abr. 2013 12:38:53

Estoy tratando de entender cómo el proceso de minería de obras. Nunca los he extraído, así que probablemente me entienden si yo la mía (tal vez usando zcash u otra crypto que está empezando). Entiendo que el general de cómo el proceso de minería de datos funciona, pero ¿qué pasa con las monedas de que un minero gana? Como, si yo soy un minero y puedo ganar algunas monedas después de resolver el problema, donde todos los liberados monedas ir? Hacer que todo se vaya a la miner? Si es así, ¿los mineros acumular todas las monedas para sí mismos y no compartirlas con el resto del mundo?

+794
maqtrx 3 nov. 2011 13:20:33

Yo soy de transferencia de USDT a BTC dirección por error, pero desde el pasado mes 3 USDT falta .cómo voy a tomar de vuelta en mi cuenta. Binance no me ayuda para recuperar mis USDT.o BTC. R diciendo cuando su transección anormal o cancelar en contacto con nosotros.desde el pasado 3 meses estoy leyendo estos por binance.

+784
Joris Weimar 20 jun. 2015 19:06:38

En una orden de límite, usted especifique qué parte de los activos (en este caso BTC) que desea comprar o vender, y el precio que usted desea. Si hay coincidencia de las órdenes en el libro (por ejemplo, alguien que quiere vender al mismo precio, o menos, ya que el precio al que usted quiere comprar), su pedido será llenada inmediatamente. Si no, su pedido quedará en el libro hasta que la coincidencia de los pedidos llegan (que podría ser nunca).

(También es posible que una orden de límite de ser sólo parcialmente llenos, si la contraparte quiere negociar una cantidad menor de lo que usted hizo. En ese caso el resto de la orden sigue en el libro).

En una orden de mercado, sólo se especifique qué parte de los activos que desea para el comercio. Su pedido se llena inmediatamente al mejor precio disponible actualmente en el mercado. Por ejemplo, si coloca un mercado de la orden de compra, que será coincidente con la corriente más baja en el precio de venta del libro. Si ese orden no es lo suficientemente grande como para cubrir completamente la suya, la siguiente a la de menor orden de venta será usada para llenar algunos más de los suyos, y así sucesivamente.

+721
Alterscape 16 jun. 2017 19:16:29

Utilizamos una versión modificada de esta biblioteca para implementar la primera SHA256 multi+mezcla de minería de la piscina.

Funciona muy bien con el S7 que ha CGMiner 4.8 ("cgminer/4.8.0"). Sin embargo, el S9 con BMMINER 2 ("bmminer/2.0.0") es incapaz de conectar, conecta, y se queda en la dificultad inicial de acciones, y por lo tanto todo el trabajo es rechazado.

Tenemos la sospecha de que el BMMINER no admite la set_difficultymétodo. La pregunta es, ¿cómo puede ser resuelto? podemos utilizar s7 firmware para los s9, o encontrar un CGMiner compatible con el S9 en cualquier lugar?

+696
user2705196 24 feb. 2011 17:17:17

Tengo un sincronizados litecoind en amazon ec2 instancia de linux.

[[email protected] ~]$ litecoind -versión
Litecoin Núcleo del Demonio de la versión v0.13.2.1 

[[email protected] ~]$ litecoin-cli getblockcount
1411130

Traté de iniciar el daemon de los siguientes comandos

  • litecoind -testnet -daemon
  • litecoind -demonio , entonces litecoind -testnet

Quiero llegar a litecoin testnet dirección para probar el envío de LTCT. Pero cuando me generan dirección puedo obtener litecoin dirección. ¿Cómo puedo utilizar este núcleo para cambiar entre los principales neto y testnet ?

ACTUALIZACIÓN

[[email protected] ~]$ litecoind --testnet --daemon
Litecoin servidor a partir de
[[email protected] ~]$ litecoin-cli getnewaddress
error: no se pudo conectar al servidor

top comando muestra litecoind ejecución.
5787 ec2-user 20 0 786m 26m 288 S 1.0 2.6 0:00.63 litecoind

¿Está bien si me matan al demonio ??

Por Favor, Ayuda!

+594
Yugandhar Chaudhari 4 feb. 2017 10:11:51

Es posible realizar un seguimiento de cuántas monedas son de propiedad de una determinada dirección, pero no hay manera de que (al menos, no fácil camino) para asociar una dirección con su propietario real; no es posible saber con certeza cómo la riqueza se distribuye.

+563
Pranav Misra 20 may. 2010 17:49:32

He tratado de llegar a la Blockchain de apoyo en Twitter acerca de esto: https://twitter.com/murchandamus/status/1059594999476547585

Espero que voy a volver a usted.

+535
zudduz 28 mar. 2018 17:13:08

Estoy teniendo un tiempo difícil la comprensión de los detalles de cómo los bloques están siendo creado por los mineros, mientras que el número de transacciones que están siendo recibidas por varios nodos en momentos ligeramente diferentes y lo que la información de estas emisiones obtener combinado con un nonce para encontrar el objetivo de satisfacer la prueba de trabajo.

Supongamos que Alice envía a Bob 1 BTC. Esta transacción se presenta difundida a toda la red de mineros que, a continuación, compruebe que la transacción es correcta y proceder a intentar encontrar un nonce para crear un bloque con todas las otras transacciones que han recibido.

Sin embargo, hay muchos de transacción de emisiones sucediendo al mismo tiempo. Las transacciones pueden llegar a diferentes nodos en diferentes momentos debido a la latencia. ¿Cómo cada nodo individual, conocer cuántos y qué transacciones se incluyen en el bloque? ¿Qué sucede con las transacciones que llegan al nodo, mientras que el bloque se "extrae"? O hacer nuevas transacciones se añaden a la manzana mientras está siendo minado? Qué datos de las transacciones que se combina con un nonce y aplica un algoritmo hash para encontrar el destino?

+494
DennIWoo 16 ene. 2014 1:52:30

Me las he arreglado para conseguir el correcto sighashes para situaciones en las que no hay OP_CODESEPARATOR ops en el código. Sin embargo, no puedo entender, basado en la UAHF documentación, ni en el código de C++ en el Bitcoin-ABC repositorio, ¿cómo se supone que debo serializar el scriptCodes con el codeseparator OP. Aquí está mi serialización de la función (de la Picocoin de la biblioteca C):

void uahf_ser_scriptCode(cstring *s, const cstring *scriptCode){

 si(scriptCode == NULL){
 cstr_append_c(s, 0);
de retorno;
}
 struct const_buffer it = { scriptCode->str, scriptCode->len };


 struct const_buffer itBegin = es;
 struct bscript_op op;
 unsigned int nCodeSeparators = 0;
 struct bscript_parser bp;

 bsp_start(&ta, &es);
 mientras (bsp_getop(&op, &bp)) {
 si (op.op == OP_CODESEPARATOR){
nCodeSeparators++;
 fprintf(stderr,"código separador\n");
}

}


 si(nCodeSeparators == 0){
 ser_varlen(s, scriptCode->len);
 ser_bytes(s, scriptCode->str, scriptCode->len);
de retorno;
}



 //ser_varlen(s, scriptCode->len - nCodeSeparators);
 it = itBegin;
 bsp_start(&ta, &es);
 int count = 0;
 cstring *x = cstr_new_sz(1024*10);
 mientras (bsp_getop(&op, &bp) && count < nCodeSeparators) {
 si (op.op == OP_CODESEPARATOR) {
count++;
 //ser_bytes(s, itBegin.p, es.p - itBegin.p - 1);
 /*if(count == nCodeSeparators){
 ser_bytes(x, itBegin.p, es.p - itBegin.p - 1);
}*/
 itBegin = es;
}
}


 si (itBegin.p != scriptCode->str + scriptCode->len)
 ser_bytes(x, itBegin.p, es.p - itBegin.p);

 ser_varlen(s, x->len);
cstr_append_buf(s,x->str,x->len);
 cstr_free(x, true);

}
+395
Santhosh Vishnu 28 ene. 2011 9:09:34

Si Alice envía 2 Bitcoin, va a los nodos a ser verificada. Si los nodos están verificando, entonces, ¿qué hacen los mineros de hacer? Leí en alguna parte que si el minero de los cambios de las transacciones en un bloque, el bloque no será válido. ¿Cómo puede minero de cambio de las transacciones en un bloque?

+161
tovv pus 7 abr. 2018 10:44:48

BCH y BSV tanto el uso de SHA256 como sus POW algoritmo, como Bitcoin (BTC).

+156
Rahul 4 may. 2015 0:21:18

¿Cuáles son los pros y los contras de la utilización de la nueva bc1xxx segwit dirección vs el 3xxx segwit dirección?

+146
durette 3 nov. 2011 7:44:29

Estoy teniendo problema con el funcionamiento de ccminer con bitcoin-qt.exe (Solo de minería de datos)

Estoy recibiendo el siguiente error en el arranque:

[2017-01-26 14:23:57] 1 minero hilo iniciado, el uso de 'bitcoin' algoritmo
[2017-01-26 14:23:57] Enlace de hilo 0 a la cpu 0 (máscara 1)
[2017-01-26 14:23:57] JSON-RPC error de llamada: Método no encontrado
[2017-01-26 14:23:57] json_rpc_call error, pruebe después de 5 segundos

De cómo resolver este problema?

Lo que yo hice:

mi ccminer parámetros de funcionamiento:

ccminer -un bitcoin -o http://127.0.0.1:8332 -u USUARIO -p 123456789 -d 5 -D

mi bitcoin.conf archivo:

rpcuser=USUARIO
rpcpassword=123456789 
servidor=1
daemon=1
escuchar=1
#rpcallowip=127.0.0.1
rpcport=8332

He tratado de agregar -P en ccminer parámetros de funcionamiento, y el resultado es

* Reconstruida URL: http://127.0.0.1:8332/
* Nombre de host 127.0.0.1 se encuentra en la caché de DNS
* Trying 127.0.0.1...
* TCP_NODELAY conjunto
* Conectado a 127.0.0.1 (127.0.0.1) puerto 8332 (#1)
* Servidor de autenticación Básica con el usuario 'USUARIO'
> POST / HTTP/1.1
Host: 127.0.0.1:8332
Autorización: Básico xxxxxxSOME_BASE64xxx
Accept-Encoding: identidad
Content-Type: application/json
Content-Length: 45
User-Agent: ccminer/8.05-KlausT
X-Minería-Extensiones: longpoll noncerange rechazar-la razón
X-Minería-Hashrate: 0

< HTTP/1.1 404 not Found
< Content-Type: application/json
< Fecha: Thu, 26 de enero de 2017 11:19:41 GMT
< Content-Length: 76
* Error HTTP antes de fin de enviar, detener el envío de
<
* Curl_http_done: llamado prematura == 0
* Cierre la conexión 1
[2017-01-26 16:19:41] JSON de respuesta del protocolo:
{
 "error": {
 "código": -32601,
 "message": "el Método no se encuentra"
},
 "resultado": null,
 "id": 0
}

[2017-01-26 16:19:41] JSON-RPC error de llamada: Método no encontrado
[2017-01-26 16:19:41] json_rpc_call error, vuelva a intentar después de 30 segundos

Pensé que, tal vez bitcoin-qt.exe no aceptar alguna de las conexiones, pero cuando ejecuto el bfgminer con los parámetros:

bfgminer -S opencl:auto -o http://127.0.0.1:8332 -u USUARIO -p 123456789 2>logfile.txt

todo funciona bien...

P. S. todo lo que es hasta la fecha:

Bitcoin v0.13.2 (64 bits)
ccminer v8.05-KlausT
pthreads estática 2, 9, 1, 0
libcurl/7.50.3 WinSSL WinIDN

Gracias de antemano

+130
Anuja Patil 16 may. 2019 2:58:48
  1. Crear P2SH redeemScript como OP_PUSH publicKeyHash:

redeemScript: 0014d5e5d05edfe2ed61099bf3f0d53be2775bbc6d0d

Es, en realidad, `OP_0 pero que han resultado en lo correcto, de todos modos.

  1. Generar scriptPubKey como OP_HASH160 hash160(redeemScript) OP_EQUAL

scriptPubKey: a914a19949e546c2f4d410cbb061c986b9ff3099ae7087

  1. Generar RIPEMD160 hash de scriptPubKey:

hash: dc62e525af22d1f0f17cc2a091cf2c9fb36bf553

Estos pasos son incorrectos. Lo que es un algoritmo hash para un P2SH dirección es la redeemScript, no la scriptPubKey. En lugar de hacer el paso 3, usted podría saltar directamente al paso 4 y el hash de la redeemScript en lugar de la scriptPubKey.

+90
adaaaam 22 nov. 2019 23:08:23

No, no es válido, como se explica aquí:

Una dirección Bitcoin, o simplemente, es un identificador de 26-35 caracteres alfanuméricos, comenzando con el número 1 o el 3, que representa un destino posible para un bitcoin pago. Las direcciones pueden ser generados sin costo alguno por cualquier usuario de Bitcoin. Por ejemplo, el uso de Bitcoin Core, uno puede hacer clic en "Nueva Dirección" y se le asigna una dirección. También es posible obtener una dirección Bitcoin con una cuenta en un cambio o en línea un servicio de billetera.

https://en.bitcoin.it/wiki/Address

+78
Cazaundrakellam 30 mar. 2017 2:58:11

Lnd no proporciona por sí mismo la betweeness centralidad de su uso o nodos. Sin embargo, usted acceso a la red con el gráfico de la llamada a la api y calcular la centralidad de ti mismo. Puedes aplicar a ti mismo siguiendo las instrucciones del artículo de Wikipedia o puede utilizar un gráfico lib como networkx que lo hace con una llamada a la api después de aprobada la red para tal lib.

Por favor, también tenga en cuenta que de corse uno puede servir de modelo a los pesos de la red de rayos de manera diferente (por ejemplo, por sólo tomar los canales de aristas con peso 1) o tratando de modelo en los honorarios. Cuando uno lo hace, el problema es cómo en el modelo de la dinámica fee_rate junto con la estática base_fee_msat` como la resultante de la cuota que se paga depende de la cantidad que se transfiere. esta cantidad podría cambiar y por lo tanto la red iba a cambiar.

+57
Baradzed 27 sept. 2015 13:36:41

usted necesidad de utilizar bytes.fromhex() función.

aquí está un ejemplo relacionado (python3)

importación hashlib
importación ecdsa
importación base58


def generate_private_and_public_keys(secreto):
 #hash digerir
 digest = hashlib.sha256(secreto.encode()).hexdigest()

 #firma y verificación de las teclas
 signing_key = ecdsa.SigningKey.from_string(bytes.fromhex(digest), la curva=ecdsa.SECP256k1)

 verifying_key = signing_key.verifying_key
 clave_pública = '04' + verifying_key.to_string().hex()

 volver signing_key.to_string().hex(), clave_pública;


def get_wif_public_key(clave_pública):
 ripemd160 = hashlib.nuevo('ripemd160')
ripemd160.actualización(hashlib.sha256(bytes.fromhex(clave_pública)).digest())
 mm = '00' + ripemd160.digest().hex()

 checksum = hashlib.sha256((hashlib.sha256(bytes.fromhex(mm)).digest())).digest()[0:4]

 binary_addr = mm + suma de comprobación.hex()
 volver base58.b58encode(bytes.fromhex(binary_addr))


private_key, clave_pública = generate_private_and_public_keys('erfjer;ljfecfv kfk gf 74764 dlr;f;cmiofmsr')
print ('Private_key: {}'.formato(private_key))
print ('clave Pública: {}'.formato(clave_pública))

wif = get_wif_public_key(clave_pública)
print ('dirección Bitcoin: {}'.formato(wif))
+29
Ed Klopfenstein 30 ene. 2010 10:51:11

jarpian explica qué es un túnel del tiempo de ataque (también conocido como zeitgeist ataque) es:

Este es un 51% de ataque donde el atacante establece el bloque de marcas de tiempo artificialmente para bajar la dificultad, lo que le permite fines de lucro más monedas que a su hash tasa de arresto. Funciona debido a la dificultad de ajuste de la fórmula se basa puramente en las marcas de tiempo que puede ser elegido libremente por el atacante. En particular, las marcas de tiempo no están obligados a estar en orden creciente. ArtForz explica el ataque en detalle aquí.

Este ataque fue utilizado en contra de la nueva Geist Geld bloque de la cadena. Geist Geld dificultad se ajusta cada 16 bloques de decisiones de la cadena particularmente vulnerables contra este ataque. Un atacante orientación Bitcoin tendría la mina de un conjunto completo de 2016 bloques en la dificultad actual antes de empezar a obtener ningún beneficio en comparación con un "normal" el 51% de ataque.

Obviamente, la realización de este ataque sería horriblemente caro. (Coinometrics lugares el costo en alrededor de $463 millones en el momento de escribir.)

Sin embargo, si tiene éxito, se podría reducir la dificultad y el aumento de la tasa de bloque por un factor de 4 cada 2 semanas, lo que le permite acuñar monedas, más de una vez cada 10 minutos.

La manera obvia de la fijación de este - cambiar el bloque de reorientar período de (2016*n, 2016*n + 2015 a 2016*n, 2016*n + 2016) es problemático. Los bloques producidos por la nueva implementación no sería válida en la implementación viejo, y vice-versa. (Fuente)

Así que, ¿cómo podría un salto en el tiempo de ataque prevenirse en un no-comportamiento disruptivo?

+25
user3306356 5 jul. 2011 4:34:32

Ahora sé que hay una Bitcoin ATM en Vancouver, Canadá. Hay un Bitcoin ATM en Londres? Si sí, ¿dónde está ubicado?

+24
jerrymichael24 21 ene. 2014 16:59:39

Sí, P2SH parece ser el camino a seguir aquí. Si vas a hacer una redimir a la secuencia de comandos como:

redeemScript: DUP HASH160 {B s pub clave id} EQUALVERIFY CHECKSIGVERIFY 1 {c1 pub clave} {c2 pub clave} {c3 pub clave} {c4 pub clave} {c5 pub clave} 5 CHECKSIG

Hash y el uso de la P2SH hash como la dirección. A continuación, usted podría pasar esta salida con un scriptSig como:

scriptSig: {cualquiera de c1-c5 firmas de la transacción} {B de la firma} {redeemScript}

Me gustaría hacer algunas pruebas con estos en un testnet de la red antes de hacer esto de verdad.

+23
HomestudioGuy 13 jul. 2019 18:57:44

Estoy tratando de modificar el simple wallettemplate para obtener la dirección del remitente en la lista de transacciones. Sin embargo, desde TransactionInput.getFromAddress() no existen en la actualidad y getConnectedOutput().getAddressFromP2PKHScript() está en desuso, no sé cual es la manera correcta de hacerlo.

+16
Evil E 9 oct. 2015 0:25:19

Mostrar preguntas con etiqueta