Transactions
Endpoint terminal del flujo de escritura. Una vez firmada off-chain la transacción devuelta por cualquier POST /contract/..., se envía a la blockchain mediante este endpoint.
sendSignedTransaction
POST /api/v1/transactions/send
Recibe la transacción firmada y la propaga a la red. Devuelve el tx_hash y, si está disponible, el receipt.
Cuerpo
{
"signedRawTransaction": "0x01f9034c8281310e820fa0834c4b40..."
}
| Campo | Tipo | Required | Descripción |
|---|---|---|---|
signedRawTransaction | string | sí | Transacción firmada en hexadecimal (incluye prefijo 0x01 para EIP-2930, 0x02 para EIP-1559, etc.). Es la salida de wallet.signTransaction(tx) en ethers.js, signed.raw_transaction.hex() en eth_account o el comando equivalente que uses para firmar la transacción cruda devuelta por la API. |
Respuestas
200 OK — Transacción minada
{
"tx_hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"receipt": {
"_type": "TransactionReceipt",
"blockHash": "0x52afb6108087cdca826289da40cc7339a4e190922f8480afd924c0ddd9d31109",
"blockNumber": 3907283,
"contractAddress": null,
"cumulativeGasUsed": "221678",
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD",
"to": "0x00000000000000000000000000000000000015Be",
"gasUsed": "221678",
"hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"index": 0,
"logs": [
{
"_type": "log",
"address": "0x00000000000000000000000000000000000015Be",
"topics": ["0x78c431540f7778eb787241a03d7401cd2c95ddb232c918f172f86e4c804d5439"],
"blockNumber": 3907283
}
],
"status": 1
}
}
206 Partial Content — Transacción enviada, recibo no disponible
{
"tx_hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"receipt": null
}
El tx_hash ya es válido. Puedes consultar el estado posteriormente con un explorador o reintentando la resolución del DID.
400 Bad Request
Causas habituales:
- La firma es incorrecta (clave privada distinta a la EOA
from). - El
noncees obsoleto (otra transacción se envió entremedias). - La EOA no tiene fondos para cubrir el gas.
500 Internal Server Error
Error genérico de la API o de la red blockchain.
status del recibo
status | Significado |
|---|---|
1 | Transacción ejecutada con éxito. El cambio quedó reflejado en cadena. |
0 | Transacción ejecutada pero el contrato revirtió. El cambio NO se aplicó. Revisa la autorización de from y los argumentos. |
Interpretación de logs
Los topics del log identifican el evento emitido. Algunos relevantes:
topics[0] | Evento |
|---|---|
0x78c431540f7778eb787241a03d7401cd2c95ddb232c918f172f86e4c804d5439 | VerificationMethodAdded |
0xd43d365fd1f319ea103c6daa06d0ee46f5b3f535985f3313a9b5b6da774da67c | VerificationRelationshipAdded |
La lista completa de eventos está documentada en el repositorio del registro de DIDs (isbe-identity-did-lib).
Ejemplo
curl -X POST "https://did-registry.portal.redisbe.com/api/v1/transactions/send" \
-H "Content-Type: application/json" \
-d '{"signedRawTransaction": "0x01f9034c8281310e820fa0834c4b40..."}'
206Si recibes 206, espera ~5 segundos y consulta el DID con GET /api/v1/identifiers/{identifier}. Si el cambio ya se refleja, la transacción se minó correctamente.