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

eth_getTransactionByBlockHashAndIndex

El método eth_getTransactionByBlockHashAndIndex recupera información de una transacción para una posición específica dentro de un bloque, identificada por el hash del bloque.

Casos de Uso

  • Construcción de exploradores de bloques para mostrar detalles de transacciones
  • Análisis de posiciones específicas de transacciones dentro de bloques
  • Verificación de inclusión de transacciones en bloques específicos
  • Auditoría de secuencias de transacciones en bloques históricos
  • Análisis forense de blockchain y seguimiento de transacciones
  • Análisis de eventos y estados de contratos inteligentes
  • Referencias cruzadas de transacciones a través de índices
  • Validación del orden de ejecución de transacciones

Detalles del Método

Devuelve datos de transacción en la posición de índice especificada de un bloque con el hash dado.

Parámetros:

Hash del bloque que contiene la transacción

Entero de la posición de índice de la transacción en el bloque (hex)

Devuelve:

Objeto de transacción, o null cuando no se encontró ninguna transacción

Hash del bloque que contiene esta transacción

Número del bloque que contiene esta transacción (hex)

Dirección del remitente

Gas proporcionado por el remitente (hex)

Precio de gas proporcionado por el remitente (hex)

Tarifa máxima por gas (post EIP-1559)

Tarifa máxima de prioridad por gas (post EIP-1559)

Hash de la transacción

Código de contrato o datos de entrada de la transacción

Contador de transacciones del remitente en este bloque (hex)

Dirección del receptor, o null para creación de contrato

Entero de la posición de índice de la transacción en el bloque (hex)

Valor transferido en wei (hex)

Tipo de transacción (0: legacy, 1: EIP-2930, 2: EIP-1559)

ID de recuperación ECDSA

Firma ECDSA r

Firma ECDSA s

Tipos de Transacciones

Las transacciones de Ethereum han evolucionado a través de varios formatos:

TipoDescripciónEIPCampos Clave
0x0Transacciones legacyPre-EIP-2718gasPrice
0x1Transacciones con lista de accesoEIP-2930gasPrice, accessList
0x2Transacciones de mercado de tarifasEIP-1559maxFeePerGas, maxPriorityFeePerGas
0x7ETransacciones blobEIP-4844Añade blobVersionedHashes, maxFeePerBlobGas

Ejemplo de Respuesta

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "blockHash": "0xc0f4906fea23cf6f3cce98cb44e8e1449e455b28d684dfa9ff65426495584de6",
    "blockNumber": "0x1b4",
    "from": "0x687422eea2cb73b5d3e242ba5456b782919afc85",
    "gas": "0x4c4b40",
    "gasPrice": "0x1",
    "hash": "0xc55e2b90168af6972193c1f86fa4d7d7b31a29c156665d15b9cd48618b5177ef",
    "input": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a36102c88061010f6000396000f3fe608060405234801561001057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061010f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f43616c6c6572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a72315820f397f2733a89198bc7fed0764083694c5b828791f39ebcbc9e414bccef14b48064736f6c63430005100032",
    "nonce": "0x4",
    "to": null,
    "transactionIndex": "0x0",
    "value": "0x0",
    "type": "0x0",
    "v": "0x1b",
    "r": "0x9db4a2414dcfac7e25b6c0fc771a4fbe5a582f640f6f8ed673970e318494e674",
    "s": "0x6cf121d02b5fcd61cec1b8a295b9006c7b137c39162386d968e9310cc2c81b83"
  }
}

Entendiendo los Campos de Transacción

Información Básica de Transacción

El objeto de transacción devuelto por este método contiene campos importantes:

  • blockHash/blockNumber: Identifica dónde está almacenada esta transacción en la blockchain
  • transactionIndex: Posición de la transacción dentro del bloque (0 es la primera transacción)
  • hash: Identificador único para la transacción
  • from: Dirección del remitente (quien inició y firmó la transacción)
  • to: Dirección del destinatario (null indica creación de contrato)
  • value: Cantidad de ETH transferida en wei (hexadecimal)
  • input: Para creación/interacción con contrato, contiene bytecode o llamada de función codificada
  • nonce: Contador de transacciones del remitente (usado para prevenir repeticiones)

Información de Gas y Tarifas

Los campos de gas y tarifas varían según el tipo de transacción:

  • gas: Gas máximo que puede usar la transacción
  • gasPrice: Precio por unidad de gas (en transacciones legacy y Tipo-1)
  • maxFeePerGas: Tarifa máxima total por unidad de gas (en transacciones Tipo-2)
  • maxPriorityFeePerGas: Tarifa máxima de prioridad por unidad de gas (en transacciones Tipo-2)

Componentes de Firma

La firma de la transacción consta de tres partes:

  • v: ID de recuperación (ayuda a derivar la clave pública de la firma)
  • r y s: Los componentes de firma ECDSA

Distinguiendo Transacciones de Creación de Contratos

Puede identificar transacciones de creación de contratos verificando si el campo to es null. Por ejemplo:

async function isContractCreation(blockHash, txIndex) {
  const tx = await ethereum.request({
    method: 'eth_getTransactionByBlockHashAndIndex',
    params: [blockHash, txIndex]
  });
  
  return tx.to === null;
}

Para transacciones de creación de contratos, la dirección del contrato puede derivarse de:

  • Dirección del remitente (from)
  • Nonce del remitente en ese momento
  • Datos de la transacción

Diferencias Con Métodos Relacionados

Este método difiere de otros métodos de búsqueda de transacciones:

MétodoClave de BúsquedaCaso de Uso
eth_getTransactionByHashHash de transacciónBúsqueda directa de transacción cuando se conoce el hash
eth_getTransactionByBlockHashAndIndexHash de bloque + índiceCuando se conocen el hash del bloque y la posición de tx
eth_getTransactionByBlockNumberAndIndexNúmero de bloque + índiceCuando se conocen el número de bloque y la posición de tx

El método basado en hash de bloque proporciona certeza absoluta de que está consultando el bloque correcto, incluso en situaciones de reorganización, mientras que el método de número de bloque es más conveniente para patrones de acceso secuencial.

Ver también

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