¿ Hay algún ejemplo de cómo obtener todos los datos de transacciones para una dirección de bitcoin en formato json?
Puede usar la API proporcionada por blockchain.info.
Por ejemplo, use https://blockchain.info/rawaddr/$bitcoin_address
para obtener todas las transacciones de una dirección en formato JSON.
Como se respondió anteriormente, puede usar blockchain.info para extraer los resultados. Aquí me gustaría agregar a la solución proporcionada por m1xolyd1an, su código funciona bien, pero solo extrae los últimos 50 resultados/transacciones realizadas por la dirección para la que está tratando de recuperar los datos.
Para extraer los detalles completos de la transacción desde el principio, se deben realizar algunos ajustes menores en el código. A continuación se muestra mi solución
<?php
$address = $_POST['Address'];
$url = "https://blockchain.info/address/".$address."?format=json&offset=0";
$json = json_decode(file_get_contents($url), true);
$totalTxs = $json["n_tx"];
echo "Total transaction : $totalTxs";
for($ex=0;$ex<$totalTxs;$ex+=50){
//$address = "1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v";
$url = "https://blockchain.info/address/".$address."?format=json&offset=$ex";
$json = json_decode(file_get_contents($url), true);
//total transactions
$totalTxs = $json["n_tx"];
//final balance
$balanceSatoshis = $json["final_balance"];
$balanceBitcoins = $balanceSatoshis / 100000000;
$balanceBitcoins = number_format($balanceBitcoins, 8);
//loop through each transaction and display all inputs and outs
for($i=0;$i<50;$i++){
echo "<table><tr><td>";
echo "HASH OF TX:</br>";
$hash=$json["txs"][$i]["hash"];
echo " ".$hash;
echo "</td><td width='550'>SENT FROM:<br>";
$n_inputs = count($json["txs"][$i]["inputs"]);
for($ii = 0; $ii < $n_inputs; $ii++){
$inValue = $json["txs"][$i]["inputs"][$ii]["prev_out"]["value"];
$inValueCalc = $inValue / 100000000;
$inAddy = $json["txs"][$i]["inputs"][$ii]["prev_out"]["addr"];
echo " ". rtrim(number_format($inValueCalc, 8), '0') ." ". $inAddy ." ";
echo "<br>";
}
echo "</td><td>SENT TO:<br>";
$n_outputs = count($json["txs"][$i]["out"]);
for($io = 0; $io < $n_outputs; $io++){
$outValue = $json["txs"][$i]["out"][$io]["value"];
$outValueCalc = $outValue / 100000000;
$outAddy = $json["txs"][$i]["out"][$io]["addr"];
echo " ". rtrim(number_format($outValueCalc, 8), '0') ." ". $outAddy ." ";
echo "<br>";
}
echo "</td></tr></table>";
}
}
?>
Su pregunta está etiquetada con blockchain.info , por lo que solo puede usar el punto finalhttps://blockchain.info/address/1ADDRESSTOLOOKUPGOESHERE?format=json
La salida proporcionará un resumen inicial de la dirección, seguido de cada transacción en la txs[]
matriz con todas las entradas y salidas. También solicitó un ejemplo, por lo que a continuación se muestra un fragmento de respuesta.
{
"hash160":"eaad40023319c547321b63f8adc6cc5a11759c61",
"address":"1NPrfWgJfkANmd1jt88A141PjhiarT8d9U",
"n_tx":159,
"total_received":261352990,
"total_sent":259703473,
"final_balance":1649517,
"txs":[
{
"ver":1,
"inputs":[
{
"sequence":4294967295,
"prev_out":{
"spent":true,
"tx_index":221676260,
"type":0,
"addr":"19hNEoHRGb2wDpxWGgDEDwaoHdEfKjZwWx",
"value":3214191,
"n":20,
"script":"76a9145f635f8cf8ad279cd74eb24a44cd128973e00a0e88ac"
},
"script":"47304402207edc4373fbb9a01ac6e07eb88f91c7008e2ed951603a3ce03393d2bf7e99bcbd022060963067a9559cc8b140136dc4f78819731260151ed9d81c19c25ffd8df42b7a01410497e0923c9b2ea5261733f81fa83333d25373db3feae91e15ae42f5347e8f65080c90b33cba4470e5eabec06db30a57b4017ad3588a26722e36249eb5c6679a39"
}
],
"block_height":454724,
"relayed_by":"87.128.111.190",
"out":[
{
"addr_tag_link":"http:\/\/wearechange.org\/donate\/",
"addr_tag":"wearechange.org",
"spent":false,
"tx_index":225606846,
"type":0,
"addr":"12HdLgeeuA87t2JU8m4tbRo247Yj5u2TVP",
"value":166948,
"n":0,
"script":"76a9140e1d1da1fc5bb5165a54a4d9ecefbc8458bae3d388ac"
}
],
Entonces, digamos que está usando PHP y desea obtener y mostrar todas las transacciones para una dirección en particular. Llamaría a la API y luego recorrería cada uno en la matriz.
http://phpfiddle.org/main/code/e4jy-rrqt
<?php
$address = "1NPrfWgJfkANmd1jt88A141PjhiarT8d9U";
$url = "https://blockchain.info/address/".$address."?format=json";
$json = json_decode(file_get_contents($url), true);
//total transactions
$totalTxs = $json["n_tx"];
//final balance
$balanceSatoshis = $json["final_balance"];
$balanceBitcoins = $balanceSatoshis / 100000000;
$balanceBitcoins = number_format($balanceBitcoins, 8);
//loop through each transaction and display all inputs and outs
for($i=0;$i<$totalTxs;$i++){
echo "<table><tr><td width='550'>";
echo "SENT FROM:<br>";
$n_inputs = count($json["txs"][$i]["inputs"]);
for($ii = 0; $ii < $n_inputs; $ii++){
$inValue = $json["txs"][$i]["inputs"][$ii]["prev_out"]["value"];
$inValueCalc = $inValue / 100000000;
$inAddy = $json["txs"][$i]["inputs"][$ii]["prev_out"]["addr"];
echo "<button style='background-color:red;'>". rtrim(number_format($inValueCalc, 8), '0') ."</button><a href='#'>". $inAddy ."</a>";
echo "<br>";
}
echo "</td><td>SENT TO:<br>";
$n_outputs = count($json["txs"][$i]["out"]);
for($io = 0; $io < $n_outputs; $io++){
$outValue = $json["txs"][$i]["out"][$io]["value"];
$outValueCalc = $outValue / 100000000;
$outAddy = $json["txs"][$i]["out"][$io]["addr"];
echo "<button style='background-color:green;'>". rtrim(number_format($outValueCalc, 8), '0') ."</button><a href='#'>". $outAddy ."</a>";
echo "<br>";
}
echo "</td></tr></table>";
}
?>
Puede usar la API de bloqueo .
http://btc.blockr.io/api/v1/address/txs/the_address
¿Dónde the_address
está la dirección sobre la que busca información?
Sin embargo, esto se limita a las 200 transacciones más recientes.
Aquí tienes un ejemplo sencillo de Python que lo hace:
from json import loads
from requests import get
url = 'http://btc.blockr.io/api/v1/address/txs/'
btc_addr = '36YKytAqTfq5FbjrBqMwnEdS62eZjB7DV6'
r = get(url + btc_addr)
data = loads(r.content)['data']
print data
¿ Dónde 36YKytAqTfq5FbjrBqMwnEdS62eZjB7DV6
está una dirección elegida al azar? El resultado será:
{u'txs':[
{u'time_utc': u'2017-03-03T08:22:57Z', u'amount': 5, u'confirmations': 4, u'amount_multisig': 0,
u'tx': u'fc8bd6d4bff2c5c07f82939cbf798f4442226f39b607353fe8355cf3170d67b7'},
{u'time_utc': u'2017-01-03T17:14:19Z', u'amount': -10, u'confirmations': 9084, u'amount_multisig': 0,
u'tx': u'daa9f8c25ce09240a02df1ac56122bb014eb9f6abe5a22bbfe04ee4fa1afb9cc'},
{u'time_utc': u'2017-01-03T11:10:21Z', u'amount': 10, u'confirmations': 9129, u'amount_multisig': 0,
u'tx': u'13362f7a746cfe6481e08155d778bba69c8db706673b99239762f5dca14f18f4'}
], u'limit_txs': 200, u'nb_txs': 3, u'nb_txs_displayed': 3, u'address': u'36YKytAqTfq5FbjrBqMwnEdS62eZjB7DV6'}
bicoin api - listreceivedbyaddress(minconf,include_empty,include_watchonly,address_filter)
return json:
[
{
address: '37ngGpLcqbgU3Bov8hjMSzgqBKfLyB3f9r',
amount: 0.0003039,
confirmations: 92,
label: '',
txids: [
'76acd9e2b7b79f68c9a4a3a4a5cce3528ee8ae6d383aed069bf03d5e95408ec7'
]
}
]
No pude obtener las transacciones Y el BTC total que entró por transacción usando los consejos en páginas como esta . Afortunadamente me topé con esto que lo resuelve maravillosamente:
$address = 'YOUR BTC ADDRESS';
$transaction_list=array();
$satoshi=100000000;
$txnlist=file_get_contents("https://blockchain.info/rawaddr/".$address);
if($txnlist)
{
$txnlist=json_decode($txnlist,true);
if($txnlist && isset($txnlist['txs']) && $txnlist['txs'])
{
$txns=$txnlist['txs'];
foreach($txns as $txn)
{
$amount=$txn['result']/$satoshi;
$time=$txn['time'];
$hash=$txn['hash'];
$transaction_list[]=array(
'amount'=>$amount,
'hash'=>$hash,
'time'=>$time
);
}
}
$data['address']=$txnlist['address'];
$data['total_txn']=$txnlist['n_tx'];
$data['total_received']=$txnlist['total_received']/$satoshi;
$data['total_sent']=$txnlist['total_sent']/$satoshi;
$data['final_balance']=$txnlist['final_balance']/$satoshi;
$data['transaction_list']=$transaction_list;
}
print '<pre>';
print_r($data);
die();
El resultado:
(
[address] => XXXXXXXX
[total_txn] => 2
[total_received] => 0.00917981
[total_sent] => 0
[final_balance] => 0.00917981
[transaction_list] => Array
(
[0] => Array
(
[amount] => 0.00298651
[hash] => XXXXXXX
[time] => 1235576379
)
[1] => Array
(
[amount] => 0.0061933
[hash] => XXXXXXXXXX
[time] => 1632561967
)
)
)
Patoshi パトシ
Nikhil Jain