¿Existe un método JSON-RPC para recuperar todas las transacciones de una dirección determinada?

Me refiero a algo así como el método listtransactions pero con el parámetro .

Respuestas (2)

Esto estaría bien, pero no, no hay forma de hacerlo. La forma más sencilla de acumular esta información es llamar listtransactionso listunspentsolicitar una lista de transacciones en su cuenta.

Después de recibir la lista, filtre la información necesaria. Cabe mencionar la listunspentconvocatoria RPC. Esto puede reducir una gran cantidad de datos devueltos si solo está interesado en las transacciones entrantes que conforman su saldo actual.

Sé que esta es esencialmente una respuesta de pirámides, sin embargo, quería mencionar explícitamente que esto no es posible con el cliente actual. Además, si planea filtrar esto usted mismo, y solo necesita los tx asociados con el valor de su billetera actual, listunspentle ahorrará una gran cantidad de datos para analizar.

No puede hacer esto con bitcoind a través del comando RPC, pero hay herramientas disponibles en Internet que lo harán por usted. Por ejemplo, blockexplorer tiene una consulta específica para este propósito. Si desea ver cómo se hace, consulte la línea 724 de app_stats.inc :

// This RELIES on the fact that only address transactions will be sent/received
$result = SQL("SELECT encode(blocks.hash, 'hex') AS block, 
                      encode(transactions.hash, 'hex') AS tx, 
                      blocks.number AS blocknum, 
                      blocks.time AT TIME ZONE 'UTC' AS time, 
                      transactions.id AS tid, 
                      transactions.raw AS rawtx

               FROM inputs JOIN transactions ON (inputs.tx = transactions.hash) 
                           JOIN blocks ON (inputs.block = blocks.hash)

               WHERE inputs.type = 'Address' AND 
                     blocks.number>$1 AND inputs.hash160 IN ($addresses)

               UNION 

               SELECT encode(blocks.hash, 'hex') AS block, 
                      encode(transactions.hash, 'hex') AS tx, 
                      blocks.number AS blocknum, 
                      blocks.time AT TIME ZONE 'UTC' AS time, 
                      transactions.id AS tid, 
                      transactions.raw AS rawtx

               FROM outputs JOIN transactions ON (outputs.tx = transactions.hash) 
                            JOIN blocks ON (outputs.block = blocks.hash)

               WHERE outputs.type = 'Address' AND 
                     blocks.number>$1 AND 
                     outputs.hash160 IN ($addresses) 

               ORDER BY tid;", $blocklimit);