Wie erhalte ich die Liste der Ein-/Ausgabetransaktionen für eine Bitcoin-Adresse im JSON-Format?

Gibt es ein Beispiel dafür, wie man alle Transaktionsdaten für eine Bitcoin-Adresse im JSON-Format erhält?

Antworten (6)

Sie können die von blockchain.info bereitgestellte API verwenden .

Verwenden Sie zum Beispiel, https://blockchain.info/rawaddr/$bitcoin_addressum alle Transaktionen für eine Adresse im JSON-Format abzurufen.

Wie oben beantwortet, können Sie blockchain.info zum Extrahieren der Ergebnisse verwenden. Hier möchte ich die von m1xolyd1an bereitgestellte Lösung ergänzen, sein Code funktioniert gut, aber er extrahiert nur die letzten 50 Ergebnisse/Transaktionen, die von der Adresse gemacht wurden, für die Sie versuchen, die Daten abzurufen.

Um die vollständigen Details der Transaktion von Anfang an zu extrahieren, müssen einige kleinere Änderungen am Code vorgenommen werden. Unten ist meine Lösung

<?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 "&nbsp;".$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 "&nbsp;". rtrim(number_format($inValueCalc, 8), '0') ."&nbsp;". $inAddy ."&nbsp;"; 
    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 "&nbsp;". rtrim(number_format($outValueCalc, 8), '0') ."&nbsp;". $outAddy ."&nbsp;";   
    echo "<br>";    
    }   
echo "</td></tr></table>";
}
}
?>
Mit welchem ​​Trick hast du die 50-Grenze umgangen?
" blockchain.info/adresse/… ". Ich habe den Offset verwendet, um die gewünschten Ergebnisse zu erzielen. Wenn der Offset auf "0" eingestellt ist, werden die letzten 50 Ergebnisse abgerufen. Wenn Sie den Offset weiter um 50 erhöhen, erhalten Sie anschließend frühere Ergebnisse aus den früheren Transaktionen. Blockchain.info sendet Ihnen die Ergebnisse der ersten Seite, wenn Sie mit Offset „0“ abfragen. Wenn Sie mit Offset ="50" abfragen, werden Ihnen die Ergebnisse von der zweiten Seite usw. gesendet. Also habe ich im Grunde genommen den Offset durchlaufen, bis ich das Ende oder die Gesamtzahl der Transaktionen erreicht habe.

Ihre Frage ist mit blockchain.info getaggt , sodass Sie einfach den Endpunkt verwenden könnenhttps://blockchain.info/address/1ADDRESSTOLOOKUPGOESHERE?format=json

Die Ausgabe liefert eine anfängliche Zusammenfassung der Adresse, gefolgt von jeder Transaktion im txs[]Array mit allen Eingaben und Ausgaben. Sie haben auch ein Beispiel angefordert, daher finden Sie unten eine Snippet-Antwort.

{
    "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"
      }
   ],

Angenommen, Sie verwenden PHP und möchten alle Transaktionen für eine bestimmte Adresse abrufen und anzeigen. Sie würden die API aufrufen und dann jede im Array durchlaufen.

http://ppfiddle.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>";
}


?>

Sie können die Blockr- API verwenden.

http://btc.blockr.io/api/v1/address/txs/the_address 

Wo the_addressist die Adresse, über die Sie Informationen suchen?

Dies ist jedoch auf die 200 letzten Transaktionen beschränkt.

Hier haben Sie ein einfaches Python-Beispiel , das dies tut:

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

Wo 36YKytAqTfq5FbjrBqMwnEdS62eZjB7DV6ist eine zufällig ausgewählte Adresse. Das Ergebnis wird sein:

{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'}
Der Link zu Blockr leitet zu Coinbase weiter.
blockr.io hat seinen Server kürzlich heruntergefahren.
bicoin api - listreceivedbyaddress(minconf,include_empty,include_watchonly,address_filter)
return json:
[
  {
    address: '37ngGpLcqbgU3Bov8hjMSzgqBKfLyB3f9r',
    amount: 0.0003039,
    confirmations: 92,
    label: '',
    txids: [
      '76acd9e2b7b79f68c9a4a3a4a5cce3528ee8ae6d383aed069bf03d5e95408ec7'
    ]
  }
]

Ich konnte die Transaktionen UND die gesamten BTC, die pro Transaktion eingegangen sind, nicht mit den Ratschlägen auf Seiten wie dieser abrufen . Zum Glück bin ich darüber gestolpert, was es wunderbar löst:

$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();

Das Ergebnis:

(
    [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
                )
        )
)