¿Cómo validar transacciones sin procesar usando bitcoind y/o bitcoin-cli (preferiblemente fuera de línea)?

Quería unirme a la diversión en este concurso de transacciones de Bitcoin, pero aunque me siento lo suficientemente cómodo trabajando con los scripts y jugando con las herramientas basadas en la web sugeridas, como un novato en Bitcoin, no tengo ni idea. cómo usar bitcoind/qt para hacer la validación de transacciones sin procesar.

He descargado bitcoind/qt/cli pero no sé qué poner en mi bitcoin.conf ni sé cómo ejecutar las herramientas ni qué datos debo proporcionarles para validar mis transacciones sin procesar.

Preferiría ejecutar mis validaciones de transacciones sin procesar sin conexión, pero ni siquiera sé si esa es una posibilidad con estas herramientas.

A pesar de buscar en wikis, foros, etc., no he encontrado una 'guía ficticia' para estas herramientas; todo parece comenzar desde un nivel de conocimiento que está en algún lugar por encima de donde estoy en este momento.

Estaría muy agradecido si alguien pudiera indicarme la dirección de alguna información adecuada o proporcionarla aquí.

Y aunque el organizador del concurso de Bitcoin propuso usar bitcoind para validar transacciones sin procesar, estoy feliz de considerar otras herramientas/servicios que harían el trabajo equivalente, así que si alguien puede indicarme alternativas (¿más simples?) También estaría bien.

Gracias por adelantado.

Respuestas (1)

¡Puede validar transacciones en una instancia fuera de línea de bitcoind que no tiene absolutamente nada de la cadena de bloques!

Lánzalo así:

$ bitcoind -datadir=some-datadir -server -connect=localhost:9999

El parámetro "conectar" le da la conexión remota. Si lo apunta a un puerto que no escucha, nunca acumulará ningún bloque. Esto está bien para validar transacciones.

Le dirá que necesita crear un bitcoin.conf, dónde y qué poner en él (rpcuser=bitcoinrpc y rpcpassword=some_long_string).

Entonces su url RPC de bitcoind será

http://bitcoinrpc:password@localhost:8332/

Utiliza la signrawtransaction API JSON documentada en la sección 7.2 de https://en.bitcoin.it/wiki/Raw_Transactions . Deberá pasar las entradas, ya que el demonio de bitcoin no las conocerá.

Soy el autor de la biblioteca Python pycoin https://github.com/richardkiss/pycoin/ y uso bitcoind para verificar que las transacciones creadas por pycoin sean válidas (o, en algunos casos, no válidas). Consulte bitcoind_agrees_on_transaction_validity en https://github.com/richardkiss/pycoin/blob/offline_tx/pycoin/services/bitcoind.py para ver un ejemplo de uso.

(También podría usar pycoin para validar transacciones. Funciona, pero aún no está del todo allí en cuanto a la documentación. Tampoco se ha probado exhaustivamente en transacciones no estándar, por lo que su implementación de VM apenas tiene autoridad).

Tengo el servidor ejecutándose en Windows 7 (gracias) y puedo emitir comandos con éxito usando bitcoind (por ejemplo, getinfo, decoderrawtransaction, etc.), pero todos mis intentos de poner cualquier tipo de datos JSON en un comando fallan... por ejemplo... bitcoin signrawtransaction <transactioninhex> [{"txid":"bc2964822afc7ed5cf0f6f412cc61a086ff765584d6cb910a2bbe8d4f045eedf","vout":0,"scriptPubKey":"76a91406f1b6703d3f56427bfcfd372f952d50d04b64bd88ac"}] error: Error parsing JSON:[{txid:bc2964822afc7ed5cf0f6f412cc61a086ff765584d6cb910a2bbe8d4f045eedf,vout:0,scriptPubKey:76a91406f1b6703d3f56427bfcfd372f952d50d04b64bd88ac}]
@PhilDannWard Intente encerrar todo entre comillas triples . Y si está en Windows, parece que cuando estaba jugando con Namecoin, creo que CMD necesita \newlines para jugar bien con JSON (aunque probablemente esté muy equivocado).
@KJO Su sugerencia me llevó a bitcoin.stackexchange.com/questions/5424/… y bitcointalk.org/index.php?topic=104512.0 El uso de cualquiera de los métodos evita el error de análisis JSON (:-)) pero probarlo en un trabajo ejemplo people.xiph.org/~greg/signdemo.txt me da complete=false donde esperaría recrear el ejemplo para obtener complete=true ( :-() ). Seguiré golpeándome la cabeza contra la pared tratando de trabajar por qué parece que no puedo procesar correctamente las transacciones sin procesar, pero gracias por acercarme unos pasos.