Hola, Hivers, en este siguiente post voy a explicar cómo extraer datos de la blockchain a través de Python sin usar la librería de Beem, que me va a permitir conocer lo siguiente: condenser_api.get_dynamic_global_properties, que son datos que podemos ver el explorador de bloques de Hive como lo muestro a continuación:
Solo necesitas conocer lo más básico de Python
Lo primero que debemos tener instalado python en la PC y tener la libreria requests
pip install requests
Luego ingresamos el siguiente código en cualquier programa de edición de código y usé la API: https://api.hive.blog
import requests
import json
url = 'https://api.hive.blog'
data = {
"jsonrpc": "2.0",
"method": "condenser_api.get_dynamic_global_properties",
"params": [],
"id": 1
}
response = requests.post(url, json=data)
response_json = response.json()
print(json.dumps(response_json, indent=2))
El resultado que arroja el requerimiento API es el siguiente:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"head_block_number": 74758685,
"head_block_id": "0474ba1de48108226b1d1ae8120f0e7ac6e12794",
"time": "2023-05-10T22:45:06",
"current_witness": "abit",
"total_pow": 514415,
"num_pow_witnesses": 172,
"virtual_supply": "483361460.899 HIVE",
"current_supply": "398640836.089 HIVE",
"init_hbd_supply": "0.000 HBD",
"current_hbd_supply": "32193837.428 HBD",
"total_vesting_fund_hive": "166811716.428 HIVE",
"total_vesting_shares": "296649687212.260518 VESTS",
"total_reward_fund_hive": "0.000 HIVE",
"total_reward_shares2": "0",
"pending_rewarded_vesting_shares": "823929801.444576 VESTS",
"pending_rewarded_vesting_hive": "430713.060 HIVE",
"hbd_interest_rate": 2000,
"hbd_print_rate": 10000,
"maximum_block_size": 65536,
"required_actions_partition_percent": 0,
"current_aslot": 74974502,
"recent_slots_filled": "340282366920938463463374607431768211455",
"participation_count": 128,
"last_irreversible_block_num": 74758685,
"vote_power_reserve_rate": 10,
"delegation_return_period": 432000,
"reverse_auction_seconds": 0,
"available_account_subsidies": 10501265,
"hbd_stop_percent": 2000,
"hbd_start_percent": 2000,
"next_maintenance_time": "2023-05-10T23:35:48",
"last_budget_time": "2023-05-10T22:35:48",
"next_daily_maintenance_time": "2023-05-11T19:31:30",
"content_reward_percent": 6500,
"vesting_reward_percent": 1500,
"proposal_fund_percent": 1000,
"dhf_interval_ledger": "21.948 HBD",
"downvote_pool_percent": 2500,
"current_remove_threshold": 200,
"early_voting_seconds": 86400,
"mid_voting_seconds": 172800,
"max_consecutive_recurrent_transfer_failures": 10,
"max_recurrent_transfer_end_date": 730,
"min_recurrent_transfers_recurrence": 24,
"max_open_recurrent_transfers": 255
}
}
¿Ok, pero que pasa si solo quiero extraer un dato?
Ok supongamos que quiero tener un sitio web que tenga actualizado el current_supply que puede funcionar para mantener actualizado un dato como este, que muestra eddie en este tweet relacionado con Coingeko:
https://twitter.com/eddiespino/status/1656398661482414080
- eddiespino
La solución seria:
import requests
import json
def get_hive_data():
url = 'https://api.hive.blog'
data = {
"jsonrpc": "2.0",
"method": "condenser_api.get_dynamic_global_properties",
"params": [],
"id": 1
}
response = requests.post(url, json=data)
return response.json()
def extract_current_supply(hive_data):
result = hive_data.get('result', {})
current_supply = result.get('current_supply', 'NULL')
return current_supply
hive_data = get_hive_data()
current_supply = extract_current_supply(hive_data)
print("Current supply:", current_supply)
Resultado:
Current supply: 398623975.716 HIVE
Vamos a suponer que ahora quiero el de HBD:
Simplemento agrego current_hbd_supply aqui: current_supply = result.get('current_supply', 'NULL')
Resultado: Current supply: 32201381.176 HBD
Bueno, amigos, así es de fácil extraer información de la blockchain Hive con Python, si dominas otro lenguaje de programación lo puedes intentar.
Puedes explorar el sitio web de Dev de Hive: https://developers.hive.io/apidefinitions/#condenser_api.get_dynamic_global_properties
Espero que te ayude en tu proceso de aprendizaje.
Saludos.

