La problématique

Aujourd'hui nous allons regarder de plus près certaines API concernant l'environnement du Bitcoin, cette monnaie virtuelle. Pour celles et ceux qui, tout comme moi ne connaissent pas forcement cet univers, je vous recommande la lecture de cette page qui fournit de belles explications sur le sujet : https://blockchainfrance.net/blockchain-pour-les-nuls/

Le service interrogé : blockchain.info

blockchain.ino est un site web qui apporte à l'utilisaateur des tas d'informations sur l'univers de la crypto-monnaie Bitcoin. Nous allons nous concentrer sur 3 actions, 3 services blockchain.info peut nous rendre :

  • La conversion de monnaies
  • La liste des valeurs en monnaies fiduciaires d'un Bitcoin
  • D'autres API plus anectdotiques via plusieurs méthodes existent :
    • Temps réel :
      • getdifficulty - Cible de difficulté actuelle sous forme de nombre décimal
      • getblockcount - Taille actuelle du bloc dans la plus longue chaîne
      • latesthash - Hachage du dernier bloc
      • bcperblock - Récompense de bloc actuelle en BTC
      • totalbc - Total des Bitcoins en circulation (avec un retard d'une heure au maximum])
      • probability - Probabilité de trouver un bloc valide à chaque tentative de hachage
      • hashestowin - Nombre moyen de tentatives de hachage nécessaires pour résoudre un bloc
      • nextretarget - Bloquer la hauteur de la prochaine difficulté recibler
      • avgtxsize - Taille moyenne des transactions pour les 1000 derniers blocs. Modifiez le nombre de blocs en passant un entier comme second argument, par ex. avgtxsize / 2000
      • avgtxvalue - Valeur de transaction moyenne (1000 par défaut)
      • interval - temps moyen entre les blocs en secondes
      • eta - temps estimé jusqu'au bloc suivant (en secondes)
      • avgtxnumber - Nombre moyen de transactions par bloc (100 par défaut)
    • Recherche d'adresses
      • getreceivedbyaddress/Address - Obtenez le nombre total de bitcoins reçus par une adresse (en satoshi). Plusieurs adresses séparées par | Ne pas utiliser pour traiter des paiements sans le paramètre de confirmation
      • Ajoutez les paramètres start_time et end_time pour limiter les informations reçues à une période donnée. Les temps fournis devraient être un horodatage Unix en millisecondes. Plusieurs adresses séparées par |
      • getsentbyaddress/Address - Obtenez le nombre total de bitcoins envoyés par une adresse (en satoshi). Plusieurs adresses séparées par | Ne pas utiliser pour traiter des paiements sans le paramètre de confirmation
      • addressbalance/Address - Récupère le solde d'une adresse (en satoshi). Plusieurs adresses séparées par | Ne pas utiliser pour traiter des paiements sans le paramètre de confirmation
      • addressfirstseen/Address - Horodatage du bloc où une adresse a été confirmée pour la première fois.
    • Recherche de transactions :
      • txtotalbtcoutput / TxHash - Récupère la valeur de sortie totale d'une transaction (en satoshi)
      • txtotalbtcinput / TxHash - Récupère la valeur d'entrée totale d'une transaction (en satoshi)
      • txfee / TxHash - Obtenir les frais inclus dans une transaction (en satoshi)
      • txresult / TxHash / Address - Calcule le résultat d'une transaction envoyée ou reçue à Address. Plusieurs adresses séparées par |
    • Outils
      • addresstohash / Address - Convertit une adresse bitcoin en un hachage 160
      • hashtoaddress / Hash - Convertit un hachage 160 en adresse bitcoin
      • hashpubkey / Pubkey - Convertit une clé publique en un hachage 160
      • addrpubkey / Pubkey - Convertit une clé publique en adresse
      • pubkeyaddr / Address - Convertit une adresse en clé publique (si disponible)
    • Divers
      • unconfirmedcount - Nombre de transactions en attente non confirmées
      • 24hrprice - Prix pondéré sur 24 heures des plus grandes bourses
      • marketcap - Capitalisation boursière en USD (basée sur un prix pondéré sur 24 heures)
      • 24hrtransactioncount - Nombre de transactions au cours des dernières 24 heures
      • 24hrbtcsent - Nombre de btc envoyés au cours des dernières 24 heures (en satoshi)
      • hashrate - Taux de hachage réseau estimé en gigahash
      • rejected - Cherchez la raison pour laquelle le hachage de transmission ou de blocage fourni a été rejeté (le cas échéant)

Code PHP exemple

Bien évidemment, l'objet de cet article n'est pas de prendre les méthodes une à une et de les faire fonctionner mais bien de montrer un aperçu que les services web fournis, qui pourraient vous interesser.

Interval moyen entre deux blocs en secondes : <br>
624.75

Résultat

Nous allons ici, rechercher le nombre de bitcoins en circulation.