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.
Devuelve datos de transacción en la posición de índice especificada de un bloque con el hash dado.
Hash del bloque que contiene la transacción
Entero de la posición de índice de la transacción en el bloque (hex)
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
Las transacciones de Ethereum han evolucionado a través de varios formatos:
Tipo | Descripción | EIP | Campos Clave |
---|---|---|---|
0x0 | Transacciones legacy | Pre-EIP-2718 | gasPrice |
0x1 | Transacciones con lista de acceso | EIP-2930 | gasPrice , accessList |
0x2 | Transacciones de mercado de tarifas | EIP-1559 | maxFeePerGas , maxPriorityFeePerGas |
0x7E | Transacciones blob | EIP-4844 | Añade blobVersionedHashes , maxFeePerBlobGas |
{
"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"
}
}
El objeto de transacción devuelto por este método contiene campos importantes:
Los campos de gas y tarifas varían según el tipo de transacción:
La firma de la transacción consta de tres partes:
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:
from
)Este método difiere de otros métodos de búsqueda de transacciones:
Método | Clave de Búsqueda | Caso de Uso |
---|---|---|
eth_getTransactionByHash | Hash de transacción | Búsqueda directa de transacción cuando se conoce el hash |
eth_getTransactionByBlockHashAndIndex | Hash de bloque + índice | Cuando se conocen el hash del bloque y la posición de tx |
eth_getTransactionByBlockNumberAndIndex | Número de bloque + índice | Cuando 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.