Cómo conseguir BIP34Hash y nMinimumChainWork?

Estoy interesado en la cuestión técnica de cómo llegó BIP34Hash y nMinimumChainWork.

Los cambios fueron introducidos aquí:

nMinimumChainWork: https://github.com/bitcoin/bitcoin/commit/ad20cddce2097c6561202777fccd257deb1a9810

BIP34Hash y BIP34Height: https://github.com/bitcoin/bitcoin/commit/33c90cf197223fb95f858db80d090d570d70498a

+37
Jeremy Behrmann 5 jun. 2018 16:14:01
17 respuestas

Tengo una pregunta sobre la configuración de una testnet. Estoy configurando un testnet. Traté de conseguir algunos testnet moneda ser que yo no sea un éxito. Pero de todos modos es posible que reduce la probabilidad de llegar a una moneda en una red de prueba sin necesidad de recompilar el bitcoin fuente. Recuerdo que en 2011 fue relativamente fácil conseguir las monedas para la prueba.

Se puede establecer un parámetro en el bitcoin.conf que reduce la probabilidad de hash

Mejor Carsten

+976
Nichole O 03 февр. '09 в 4:24

Puede mi LN canal de cierta cantidad "X" de recibir un LN pago mayor que "X"..o recibir múltiples pequeños pagos que excedan de "X"?

Por ejemplo, supongamos que se tiene una línea de té de la tienda y uno de 100.000 satoshi canal abierto con uno de los grandes LN nodos que hay (por ejemplo, acinq, uno de LNbig nodos)...mi forma de pensar, de ser, bueno, yo quiero mantener los gastos bajos en la apertura de los canales, y el gran nodo estoy conectado a la voluntad de conectar con una gran cantidad de personas que desean comprar a mi línea de té de la tienda.

Sin embargo, decir que mi tienda tiene un elemento que es de 10.000 satoshi y un elemento que es de 1.000.000 de satoshi.

¿Qué sucede si:

(1) recibo de quince 10,000 satoshi orden/pagos enruta a través de los 100k gran LN nodo canal...o

(2) recibo uno de 1.000.000 de pago enrutan a mí a través de los 100k gran nodo de canal (una compra de uno de mis "caro" de 1.000.000 de elemento).

Yo creo que para ejecutar mi tienda que necesita para crear múltiples gigante canales para dar cabida a cualquier potencial de los pagos recibidos...¿verdad? Así, en los dos casos anteriores, el canal debe tener lo suficiente para recibir los pagos y no puede recibir un pago más grande de lo que es en el canal.

+917
DLEE 12 mar. 2014 16:23:28

Soy nuevo a la codificación, y sólo conocen swift, obj-C es todavía ajeno a mí. Tengo un buen funcionamiento de la cartera, pero por ahora estoy confiando en BlockCypher API para crear una transacción que NO quiero hacer. ¿Alguien puede por favor ayudar a decirme qué estoy haciendo mal en el siguiente fragmento de código. Estoy creando un raw de transacciones sin embargo tengo un extraño de respuesta a la hora de descodificar los casos en los que la dirección de matrices de vacío o nulo. Algo está muy mal, si alguien tiene alguna experiencia en lo que ayudarme se lo agradeceria mucho ya que esto me está volviendo loco.

importación de UIKit

clase BuildTransactionViewController: UIViewController, BTCTransactionBuilderDataSource {

var addressToSpendFrom = "n1QQYAHbw3q6UjWN6Q4d9oqa6u5iUDnPht"
var privateKeyToSign = "cNeZkP1QPQ37C4rLvoQ8xZ5eujcjsYHZmj8clfppohypvfkhzhwu"
var receiverAddress = "n1v9HH9Abs36fYf8KbwnFUfzR4prLBXhtw"
var inputData = [NSDictionary]()
var scriptArray = [String]()
var transacción = BTCTransaction()

reemplazar func viewDidLoad() {
super.viewDidLoad()

 getUTXOforAddress(dirección: addressToSpendFrom)
}

func getUTXOforAddress(dirección: String) {

 var url:NSURL!
 url = NSURL(cadena: "https://api.blockcypher.com/v1/btc/test3/addrs/\(dirección)?unspentOnly=true")

 vamos a task = URLSession.compartida.dataTask(con: url! como URL) { (datos, respuesta, error) -> Void en

 do {

 si el error != nil {

 de impresión(error como todo)
 DispatchQueue.principal.async {
 displayAlert(viewController: auto, título: "Error", el mensaje: "por Favor, compruebe su conexión a interent.")
}

 } else {

 si vamos a urlContent = datos {

 do {

 vamos a jsonUTXOResult = pruebe JSONSerialization.jsonObject(con: urlContent, opciones: JSONSerialization.ReadingOptions.mutableLeaves) como! NSDictionary

 print("json = \(jsonUTXOResult)")

 si vamos a utxoCheck = jsonUTXOResult["txrefs"] como? NSArray {

 auto.inputData = utxoCheck como! [NSDictionary]
 print("utxoCheck = \(utxoCheck)")

 para el elemento en sí mismo.inputData {

 vamos a transactionHash = (punto)["tx_hash"] como! Cadena
 vamos a valor = (punto)["valor"] como! Int

 var url:NSURL!
 url = NSURL(cadena: "https://api.blockcypher.com/v1/btc/test3/txs/\(transactionHash)")

 vamos a task = URLSession.compartida.dataTask(con: url! como URL) { (datos, respuesta, error) -> Void en

 do {

 si el error != nil {

 de impresión(error como todo)
 DispatchQueue.principal.async {
 displayAlert(viewController: auto, título: "Error", el mensaje: "por Favor, compruebe su conexión a interent.")
}

 } else {

 si vamos a urlContent = datos {

 do {

 vamos a txHashResult = pruebe JSONSerialization.jsonObject(con: urlContent, opciones: JSONSerialization.ReadingOptions.mutableLeaves) como! NSDictionary

 print("txHashResult = \(txHashResult)")

 si vamos a outputsCheck = txHashResult["salidas"] como? NSArray {

 print("salidas = \(outputsCheck)")

 para la salida en outputsCheck {

 si vamos a valueCheck = (salida! NSDictionary)["valor"] como? Int {

 si valueCheck == valor {

 vamos a script = (salida! NSDictionary)["script"] como! Cadena
auto.scriptArray.append(secuencia de comandos)
 print("script = \(secuencia de comandos)")
}

}

}

 print("inputData = \(auto.inputData)")
 print("scriptArray = \(auto.scriptArray)")
auto.callBTCTransaction()

}

 } catch {

 print("JSon error de procesamiento")
 DispatchQueue.principal.async {
 displayAlert(viewController: auto, título: "Error", el mensaje: "por Favor, inténtelo de nuevo.")
}
}
}
}
}
}

tarea.resume()
}
}

 } catch {

 print("JSon error de procesamiento")
 DispatchQueue.principal.async {
 displayAlert(viewController: auto, título: "Error", el mensaje: "por Favor, inténtelo de nuevo.")
}
}
}
}
}
}

tarea.resume()

}

func callBTCTransaction() {

 dirección = BTCAddress(cadena: auto.receiverAddress)
 vamos a newTransaction = BTCTransactionBuilder()
 newTransaction.dataSource = auto
 newTransaction.shouldSign = true
 newTransaction.changeAddress = BTCAddress(cadena: auto.addressToSpendFrom)
 newTransaction.salidas = [BTCTransactionOutput(valor: BTCAmount(1000), dirección: dirección)]
 newTransaction.feeRate = BTCAmount(2000)
 var resultado:BTCTransactionBuilderResult? = nil
 do {
 resultado = pruebe newTransaction.buildTransaction()
 print("transactionRaw = \(String(describir: el resultado?.transacción.hex))")
 } catch {
 print("error = \(error como todo)")
}
}

func transactionBuilder(_ txbuilder: BTCTransactionBuilder!, keyForUnspentOutput txout: BTCTransactionOutput!) -> BTCKey! {
print("transactionBuilder")

 vamos clave = BTCKey.init(wif: auto.privateKeyToSign)
 la clave?.isPublicKeyCompressed = true

 tecla de retorno
}



func unspentOutputs(para txbuilder: BTCTransactionBuilder!) -> NSEnumerator! {

 vamos salidas = NSMutableArray()

 para (índice, elemento) en inputData.enumerados() {

 vamos a txout = BTCTransactionOutput()
 txout.valor = BTCAmount((punto).valor(forKey: "valor") como! Int64)
 txout.script = BTCScript.init(hex: auto.scriptArray[index])
 txout.índice = UInt32((punto).valor(forKey: "tx_output_n") como! Int)
 txout.confirmaciones = UInt((punto).valor(forKey: "confirmaciones") como! Int)
 vamos a transactionHash = (punto)["tx_hash"] como! Cadena
 txout.transactionHash = transactionHash.de datos(usando: .utf8)
salidas.agregar(txout)

}

 print("salidas = \(salidas)")

 el retorno de las salidas.objectEnumerator()
}

}

+897
skarz 8 dic. 2016 19:06:33

Estoy tratando de automatizar el lanzamiento de varios LND instancias con una secuencia de comandos de Python. He estado tratando de utilizar lnd_grpc, pero no puede conseguir que funcione. He creado un tema en el LND repositorio y apuntaba hacia https://api.lightning.community/. Este sitio web tiene un montón de documentación y ejemplos, pero me lo puedo obtener la relación entre lnd_grpc (que he estado usando) y rpc_pb2_grpc (que se utiliza en toda la documentación).

Por ejemplo, la inicialización de una nueva cartera por oficial de google docs) en lnd_grpc es:

lnd_rpc = lnd_grpc.Cliente()
lnd_rpc.gen_seed()
lnd_rpc.init_wallet()

que es diferente de la que en rpc_pb2_grpc.

Son estas bibliotecas (esta es una palabra correcta?) compatible? Debo cambiar de lnd_grpc a rpc_pb2_grpc?

+845
futuraprime 14 nov. 2018 1:12:35

LinuxCoin es probablemente la cosa más cercana a lo que estás buscando. Según la wiki, Linuxcoin es:

Un ligero basadas en Debian OS que se incluye en la imagen de todo que es necesario para que se ejecute como un cliente Bitcoin y todo lo necesario para empezar la minería en ATI hardware.

Edit: también puede ser digno de mirar en BAMT si su operación es de un tamaño considerable

Actualización: Cómo cambian las cosas... BAMT es ahora el de facto de minería de distro. Ahora estoy teniendo un tiempo difícil incluso encontrar un enlace directo para descargar LinuxCoin de y BAMT ha pasado de experimental a una completa minería distro utilizable para casi cualquier escala. Recomiendo BAMT más de LinuxCoin.

+776
user9283 3 dic. 2013 1:47:32

No creo que hay buenas razones para el uso de varios CALCETINES de los puertos de escucha en el mismo tor en su situación. Después de todo, todo termina en el mismo lugar.

+713
Adam Greene 4 may. 2012 23:29:48
  1. Addmultisigaddress 2 [{"dirección/clave pública de Bitcoincore dirección", "clave pública de otra cartera clave"}] debe devolver el P2SH dirección (3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra) y también agregar 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra a la UTXOs
  2. importaddress 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra agregará el P2SH dirección a la cartera como WatchOnly

Estoy asumiendo que usted está ejecutando un total de nodos, utilizando el txindex=1 bandera, por lo que el addmultisigaddress comando es lo que vas a necesitar para canjear 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra en Bitcoincore. FYI, createmultisig tiene los mismos parámetros que addmultisigaddress (RPC referencia) pero volviendo al canjear secuencia de comandos sólo; es decir, no añadiendo el P2SH dirección a la UTXOs.

Como ya se mencionó, para todos los multisig los comandos que necesitará el pleno de la clave pública (hex versión, comenzando con 0x04 o 0x02/03 comprimido). La única razón por la que puede sustituir el Base58Check dirección en Bitcoincore como una clave pública es debido a que el software recupera la clave pública de la cartera y lo sustituye en consecuencia.

Una forma alternativa de hacerlo es mediante el uso de dumpprivkey/validateaddress para obtener el Bitcoincore claves requeridas y, a continuación, importar la clave privada en la otra cartera de software y firmar/canjear con eso.

EDIT: he probado a importar no billetera.dat pubkeys para un multisig P2SH dirección y ha añadido correctamente el Tx a la UTXOs devuelto por listunspent, con la única diferencia de que el JSON que devuelve datos tendrá disponibles: falso. Yo lo hice de la siguiente manera:

  1. addmultisigaddress 2 '["pubkey1", "pubkey2"]'
  2. Tomar la devuelve P2SH dirección ...
  3. importaddress 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra "PRUEBAS" true
  4. Espere que la búsqueda completa
  5. Financiado 3MWpeBDwJdk8F7fecZBZ6FHjDJVnGxpnra con createrawtransaction/signrawtransaction/sendrawtransaction (pero estoy seguro de que puede hacerlo utilizando la interfaz gráfica de usuario
  6. listunspent 0 volverá JSON array (incluyendo 0 confirma) con un objeto que muestra redeemScript pero con disponibles: falso
  7. Tendrás que canjear el Tx usando createrawtransaction con el privatekeys pasados como parámetros a pasar esto, obviamente
+705
KiwiSteve 26 feb. 2017 10:02:43

Se dice que un Bitcoin miner atacante con suficiente potencia de la CPU para correr más rápido que toda la red está en mejor situación de la minería honesto bitcoins - lo cual no es correcto ya que mediante la creación de una falsa bloque de la cadena, el atacante ya gana el coinbase en el camino, igual que lo haría si él comportarse honestamente.

En realidad, un honesto minero tiene todos los incentivos para defraudar al añadir a su bloque de transacciones que cancelar su propio "real" de las transacciones.

O me estoy perdiendo algo?

EDITAR - y tal vez una respuesta

Permítanme darles un ejemplo, supongamos que Alice posee una gran piscina (grandes piscinas había conocido a crear hasta 6 bloques en una fila), también Alice se compra algo de Bob para 1 bitcoins cada 10 minutos.

Alice podría tratar de hacer un doble gasto de cada uno de sus pagos (por el paso de la misma bitcoins a sí misma) y el uso de la segunda transacciones en el bloque ella es la minería.

Tenga en cuenta que todo esto es completamente de fiar.

Si el grupo resuelve la prueba-de-trabajo, y su 'real' tx será cancelada - Bob puede esperar 10 minutos para ver si la transacción se confirma o no, pero podría no ser suficiente en el caso de que exista un tenedor.

Conclusión:

Un dueño de una gran piscina puede tratar de crear doublespends pero él va a ganar su btc sólo en raras ocasiones cuando:

  1. hubo un tenedor
  2. Bob no comprobación de la horquilla, y no esperar el tiempo suficiente (por ejemplo, 1 hora) para ver si la transacción fue confirmado
  3. El bien que Alice comprado no está asociada a ninguna dirección física (por lo que Bob no puede encontrar a Alice y reclame su dinero).
+683
Emin666 11 ago. 2019 12:11:57

Como se indicó anteriormente muchos de los mineros de hoy ya inicio minería de datos utilizando sólo el nuevo blockheader antes de que el bloque se valida y se descargan.

Esta es la razón por la que a veces se ve recién generado bloque con una sola transacción (el coinbase de transacción). Un ejemplo de esto es el siguiente bloque: https://blockchain.info/block/00000000000000000a06dbd18a15a452c4dd50f662044e654f83066da2775ed8

Esto es debido a que el minero no sabe exactamente que las transacciones fueron incluidos en el bloque anterior antes de descargar y validando el mismo. Debido a esto, sólo incluye el coinbase transacción hasta que el mempool ha sido actualizado para evitar la inclusión de una transacción que ha sido incluido en el último bloque.

+650
Romario Dixon 18 feb. 2018 3:48:26

No, su teoría es incorrecta. En todo caso, el verde dirección facilita el rastreo.

Si veo una transacción de un Instawallet de direcciones verde, me citación de Instawallet y pedirles que les mandó a hacer la transacción. Boom, me encontraron a mí.

Si yo no uso el verde dirección, ¿cómo pueden decir las monedas vino de Instalwallet a todos? ¿Cómo pueden incluso saber que a una citación?

Si puedo enviar las monedas directamente de mi bolsillo, el comerciante podría rastrear las monedas de vuelta a la bolsa donde me compró originalmente, y, posiblemente, emitir una citación judicial para el intercambio (que es muy probable que conoce mi identidad).

Entonces, ¿qué? Si algunos de los billetes de dólares fueron utilizados para comprar los medicamentos que me retiré de un CAJERO automático, ¿qué dice usted? Y cómo se traza las monedas para el intercambio exactamente?

Considerando, que si puedo enviar las monedas a través de un Verde Dirección, el comerciante no podía traza las monedas aguas arriba del todo - incluso si se emitió una citación para InstaWallet, no debe haber ninguna manera de determinar la fuente original de las monedas.

No sigo su razonamiento. Se citación de Instawallet y les pedimos de usuario que mandó que de transacción a través de sus direcciones verde. Se identifican. Son sólo guarda el duro trabajo de tratar de trazar las monedas para un intercambio.

Es bastante académico de todos modos. No hay una buena manera de decirle a un simulacro de transacción (donde el remitente y destinatario de las cuentas son controladas por el mismo partido) a partir de una real.

+639
Lidia Stan 5 ene. 2015 17:13:28

Utiliza m/0'/0'/i' con i incrementando a lo largo del tiempo.

El dumpwallet RPC comando producirá un archivo de texto con todas las claves privadas, incluyendo el BIP32 de la semilla.

+607
Sharon T 8 sept. 2016 8:12:09

Compré aproximadamente 1 BTC es de 2013. Me depositó BTC con una cartera, pero yo no guardo la billetera en la sincronización. Me acaba de abrir el monedero y dice que tengo 0.0 BTC, y que tengo aproximadamente 60+ semanas de sincronización con el fin de traer a mi monedero velocidad. Mi pregunta son las siguientes:

1.) ¿cómo puedo comprobar que todavía tengo este BTC? 2.) ¿Cómo puedo transferir el BTC a una nueva cartera sin la sincronización de mi cartera actual?

Soy un noob a BTC, cualquier ayuda será muy apreciada.

Gracias

+606
Teresa Vandal 21 may. 2015 15:10:29

http://www.engadget.com/2012/08/20/bitinstant-founder-says-bitcoin-debit-card-to-launch-within-next/

Han pasado casi cuatro meses. Donde puedo encontrar la última información pública acerca de esto?

+554
J David Smith 27 abr. 2017 5:35:20

Alguien me dijo que le debo dar mi cartera de correo electrónico y, a continuación, se va a solicitud de la mina de la minería de la red, después de que le pidió que se recibirán por correo electrónico desde la que podrán obtener el código que tienes para mí enviar y, a continuación, invertir su bitcoin wallet con 50$.Y después de unas horas voy a obtener el beneficio en mi billetera. Es esto una estafa?

+329
Ellli 2 abr. 2012 14:37:38

c-rayo internamente llama bitcoin-cli y va a pasar un par de argumentos de línea de comandos para él. Estos argumentos son el prefijo --bitcoin-* y va a coincidir con la que bitcoin-cli acepta.

Así que para su uso-caso, es necesario asegurarse de que bitcoin-cli está disponible en la máquina que se va a ejecutar el c-rayo instancias. Si no se puede simplemente usar el Bitcoin PPA para instalar (pero no de ejecución) bitcoind que también instalar bitcoin-cli (asumiendo que usted está utilizando un sistema operativo basado en debian):

sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update

Para una distancia de bitcoind deberá especificar los siguientes argumentos:

  • --bitcoin-rpcconnect=<bitcoind-ip:puerto> esto indica bitcoin-cli para conectar a un servidor de bitcoind ejemplo, en lugar de tratar localhost:8332 (asegúrese de bitcoind está configurado con -rpcallowip=<ip>, donde <dirección ip> es la máquina que va a estar corriendo c-relámpago)
  • --bitcoin-rpcuser=<nombre de usuario> el nombre de usuario configurado con bitcoind
  • --bitcoin-rpcpassword=<contraseña> la contraseña configurada con bitcoind

En cualquier caso me gustaría sugieren que el funcionamiento de bitcoin-cli --bitcoin-rpcconnect=<bitcoind-ip:puerto> --bitcoin-rpcuser=<nombre de usuario> --bitcoin-rpcpassword=<contraseña> desde la línea de comandos en el c-rayo de la máquina para verificar que bitcoind y bitcoin-cli están configurados correctamente.

+273
tork73 19 dic. 2011 9:45:51

No puedo encontrar huérfanos bloques en el Bitcoin red a partir de julio, con referencias a blockchain.info. ¿Significa esto que el bitcoin red de centralización? Me gusta C. Decker en papel de "la Propagación de la Información en la Bitcion de la Red." Pero si la añeja tasa es 0, este papel de la ecuación no se puede aplicar para el Bitcoin.

+244
Akshay Bharath 4 feb. 2012 19:42:33

Depende de la voluntad del comerciante de riesgo en un porcentaje muy pequeño de error en los pagos. Cuando el cliente envía una transacción con la suficiente cuota, y todas las entradas de la transacción tenemos confirmaciones, el riesgo de no obtener el pago es muy bajo. Doble gasto ataques son económicamente inviable con los pequeños pagos. Sin embargo, según el minero honorarios, micro pagos pueden ser poco atractivas para el cliente que tiene que pagar la cuota.

+243
jdiaz 6 abr. 2019 1:11:28

Mostrar preguntas con etiqueta