Comenzando con TheRPC
Referencia de API
API de Ethereum
Core API
Guías
Ethereum/Core API/eth_getBlockByNumber

eth_getBlockByNumber

El método eth_getBlockByNumber recupera información detallada sobre un bloque por su número o utilizando identificadores especiales de bloque como "latest". Este método esencial proporciona acceso completo a datos del bloque incluyendo transacciones, uso de gas, marcas de tiempo y otras métricas cruciales de la blockchain, convirtiéndolo en una herramienta fundamental para aplicaciones blockchain.

Casos de Uso

  • Monitoreo de blockchain en tiempo real y feeds de datos
  • Verificación de transacciones y seguimiento de confirmaciones
  • Exploradores de bloques y paneles de análisis
  • Investigación de optimización de gas y análisis de tarifas
  • Análisis de datos históricos e investigación de series temporales
  • Evaluación de estado de red y métricas de salud
  • Verificación de sincronización y validación de cadena
  • Confirmación de despliegue de contratos inteligentes
  • Investigación de MEV (Valor Máximo Extraíble)

Detalles del Método

Este método permite consultar bloques por su altura en la cadena o usando etiquetas predefinidas, con opciones para incluir objetos completos de transacción o solo hashes.

Parámetros:

Número de bloque en formato hexadecimal o etiquetas: latest, earliest, pending, safe, finalized

Si es true, devuelve objetos completos de transacción; si es false, devuelve solo hashes de transacción

Devuelve:

Un objeto de bloque, o null si no se encontró ningún bloque

Tarifa base por gas en hexadecimal (post EIP-1559)

La dificultad de este bloque en hexadecimal

Campo de datos extra de este bloque

Gas máximo permitido en este bloque en hexadecimal

Gas total utilizado por todas las transacciones en hexadecimal

Hash del bloque, null si está pendiente

Filtro Bloom para los logs, null si está pendiente

Dirección del minero/validador

Hash de 256 bits en hexadecimal

Hash de la prueba de trabajo, null si está pendiente

Número de bloque en hexadecimal, null si está pendiente

Hash del bloque padre

Raíz del trie de recibos

SHA3 de los datos de los tíos

Tamaño de este bloque en bytes (hexadecimal)

Raíz del trie de estado final

Marca de tiempo Unix cuando se recopiló el bloque

Dificultad total de la cadena hasta este bloque

Array de objetos de transacción o hashes

Raíz del trie de transacciones

Array de hashes de tíos

Array de retiros de validadores (post EIP-4895)

Raíz Merkle de retiros (post EIP-4895)

Ejemplo de Respuesta

{
	"jsonrpc": "2.0",
	"id": 1,
	"result": {
		"baseFeePerGas": "0x41a2b3591",
		"difficulty": "0x0",
		"extraData": "0x556e697377617020426c6f636b20231242353045",
		"gasLimit": "0x1c9c380",
		"gasUsed": "0x189b1f1",
		"hash": "0x4f32106f6ac5b44248aeda10c3e718f1048ddc274629cd1897a0ff1f7926c41e",
		"logsBloom": "0xe54b0921498ad482b83...[truncated]",
		"miner": "0x690B9A9E9aa1C9dB991C7721a92d351Db4FaC990",
		"mixHash": "0x51c1b337d7ec2023e7bfd47907a1ee256668e46fb9feb0007c62f9bc2a8a19a7",
		"nonce": "0x0000000000000000",
		"number": "0x112a880",
		"parentHash": "0xeea8dce30e2d7c2a7ffe35b6fc2c60782f59a123ff2812e85bf4a49839c6d5a2",
		"receiptsRoot": "0x14a87619e588c1ef9f8c69fd8e3dff2a49b2c73f19871a74a7e1d97d67d00416",
		"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
		"size": "0x1284d",
		"stateRoot": "0xb87823a3aea0dd94ffe84481962c8f988e3c2ffac98a9af2b81c1c3e4fcc6dc0",
		"timestamp": "0x65f0d46e",
		"totalDifficulty": "0xc70d815d562d3cfa955",
		"transactions": [
			"0x5a8b22ab3e70ee6ee4b15b48b1c88d8c01806a677ab8938c68dc4323cf51ae7a",
			"0x8d2fcaa1aef4f4f19aa35bf9d91b34e24902efcaf670953a0bf7e0a6dc585e53"
			// ... hashes de transacciones adicionales
		],
		"transactionsRoot": "0x39f9c7a211b008becd35bfbceaf186d564fcb737a9c026f8af7b5d89a8989143",
		"uncles": [],
		"withdrawals": [
			{
				"index": "0x57ca86",
				"validatorIndex": "0x17384",
				"address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f",
				"amount": "0x12a05f200"
			}
			// ... retiros adicionales
		],
		"withdrawalsRoot": "0x36a75a6993b676f8196354ed14e3c77167b9ae823211706b30aa125c3a5dac28"
	}
}

Significado de las Etiquetas de Bloque

  • latest: El bloque minado más recientemente (uso más común)
  • earliest: Bloque génesis (bloque 0)
  • pending: Bloque actualmente pendiente (transacciones en el mempool)
  • safe: Último bloque considerado seguro por la red (finalidad en progreso)
  • finalized: Último bloque que ha logrado finalidad (post-Merge)

Bandera de Detalle de Transacción

El segundo parámetro determina cómo se devuelven los datos de transacción:

  • false: Solo se devuelven los hashes de transacción (más eficiente para escaneo de bloques)
  • true: Se devuelven objetos completos de transacción (útil para análisis detallado de transacciones)

Campos Clave de Bloque Explicados

  • number: El número de bloque (altura) en la cadena
  • timestamp: Marca de tiempo Unix cuando se creó el bloque (segundos desde 1 de enero de 1970)
  • gasUsed/gasLimit: Gas consumido real vs. máximo permitido en este bloque
  • baseFeePerGas: Tarifa base por unidad de gas introducida en EIP-1559
  • difficulty: Siempre 0 después de The Merge a prueba de participación
  • miner: Dirección que recibió la recompensa del bloque (validador en PoS)
  • withdrawals: Retiros de validadores disponibles post-actualización Shanghai

Ejemplo Práctico

// Ejemplo de seguimiento de tiempos de bloque y volúmenes de transacciones
async function analyzeNetworkActivity() {
	const latestBlock = await provider.send('eth_getBlockByNumber', ['latest', false]);
	const prevBlockNum = (parseInt(latestBlock.number, 16) - 100).toString(16);
	const prevBlock = await provider.send('eth_getBlockByNumber', [`0x${prevBlockNum}`, false]);

	// Calcular tiempo entre bloques
	const latestTime = parseInt(latestBlock.timestamp, 16);
	const prevTime = parseInt(prevBlock.timestamp, 16);
	const timespan = latestTime - prevTime;
	const avgBlockTime = timespan / 100;

	// Volumen de transacciones
	const txCount = latestBlock.transactions.length;
	const gasUsed = parseInt(latestBlock.gasUsed, 16);

	console.log(`Average block time: ${avgBlockTime.toFixed(2)} seconds`);
	console.log(`Latest block transactions: ${txCount}`);
	console.log(`Gas used: ${gasUsed.toLocaleString()} units`);
}

Ver también

¡Ayúdanos a Mejorar!
Comparte esta página y ayúdanos a crear un producto aún mejor para ti.