Cómo ver el estado de la transacción con eztz después de eztz.contract.send
-
-
Posible duplicado de [¿Cómopuedoentenderpor quéfalló unatransacción?] (Https://tezos.stackexchange.com/questions/172/how-can-i-understand-why-a-transaction-has-failed)Possible duplicate of [How can I understand why a transaction has failed?](https://tezos.stackexchange.com/questions/172/how-can-i-understand-why-a-transaction-has-failed)
- 2
- 2019-02-06
- Ezy
-
Notengo unbloque,porqueeztzen símismo hace que se reciba unbloque dentro de la operación de llamadaI do not have a block, because eztz itself causes a block to be received inside the call operation
- 0
- 2019-02-06
- Михаил Магомедов
-
perdón,¿qué quieres decir con queeztz "hace que se reciba unbloque dentro de la operación de llamada"?¿Puedeproporcionarmás detalles/información sobre lo queestá haciendo y cuáleselestado de latransacciónpara que comprendamos claramenteel contexto?¡Gracias!sorry what do you mean that eztz "causes a block to be received inside the call operation" ? Please can you provide more details/infos about what you are doing and what is the status of the transaction so we understand clearly the context. Thank you!
- 0
- 2019-02-06
- Ezy
-
¿Podría ser que laidentificación delbloque (eztz.rpc.getHead ()) cambie si la recibo después de llamar almétodoeztz.contract.send?Could it be that the block id(eztz.rpc.getHead()) will change if I receive it after calling the eztz.contract.send method?
- 0
- 2019-02-06
- Михаил Магомедов
-
paramínotiene sentido lo queestás diciendo.¿Puedespegar aquíelmensaje quete devuelveeztz?así serámás sencillo.¿Puedesencontrar latransacciónen TzScan?it does not make sense to me what you are saying. Can you paste here the message that eztz returns you ? it will be simpler that way. Can you find the transaction in TzScan ?
- 0
- 2019-02-06
- Ezy
-
usoeztz.contract.send yme devuelve soloel hash detransacción,ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf y cómo verelestado de latransacción coneztz.No sé laidentificación delbloquei use eztz.contract.send and he return me only transaction hash, ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf and how watch transaction status with eztz. I dont know block id
- 0
- 2019-02-06
- Михаил Магомедов
-
vamos a charlaren su lugarlet's go to chat instead
- 0
- 2019-02-06
- Ezy
-
Permítanos [continuaresta discusiónen el chat] (https://chat.stackexchange.com/rooms/89334/discussion-between-ezy-and--).Let us [continue this discussion in chat](https://chat.stackexchange.com/rooms/89334/discussion-between-ezy-and--).
- 0
- 2019-02-06
- Ezy
-
3 respuestas
- votos
-
- 2019-02-13
En realidad,hay unanuevafunción coneztz que haceesto ahora:
eztz.rpc.awaitOperation( opHash, //The operation hash to watch interval, //Optional - Time between checks, defaults to 30 seconds timeout//Optional - Timeout - will end after this, defaults to 180 seconds ).then(function(blockHash){ //Will resolve with the blockHash if found console.log("Found in block " + blockHash) }).catch(function(){ //Reject on time out };
El uso de los valorespredeterminadosparecefuncionarbien paramí (espera aproximadamente 3bloques).
There's actually a new function with eztz that does this now:
eztz.rpc.awaitOperation( opHash, //The operation hash to watch interval, //Optional - Time between checks, defaults to 30 seconds timeout//Optional - Timeout - will end after this, defaults to 180 seconds ).then(function(blockHash){ //Will resolve with the blockHash if found console.log("Found in block " + blockHash) }).catch(function(){ //Reject on time out };
Using the defaults seem to work fine for me (waits approx 3 blocks).
-
- 2019-02-06
Creo quepodríasenviar una llamada rpc sinprocesar usandoeztz:
eztz.node.query("/chains/main/blocks/head/operations").then(function(res){ console.log(res); }).catch(function(e){});
/chains/main/blocks/head/operations
Le da una lista de operacionesincluidasen el últimobloquetambién conocido comohead
. Puedeencontrar unaexplicación detallada deesteextremo de RPC aquí .Entonces,la solución completapodría ser que 'sondees'estepuntofinalen un ciclo setInterval,hasta queencuentres un recibo detu operación,dentro de un ciertoperíodo detiempo.
Porejemplo,en el siguiente
1 minute
,llame alpuntofinal de RPC y,si seencuentra un recibo que coincida conmioperation id
,podemos concluir que la operación seincluyó correctamente.El comando
tezos-client
alternativo sería:tezos-client wait for <operation hash> to be included
I think you could send a raw rpc call using eztz:
eztz.node.query("/chains/main/blocks/head/operations").then(function(res){ console.log(res); }).catch(function(e){});
/chains/main/blocks/head/operations
Gives you a list of operations included in the latest block also known ashead
. You can find a detailed explanation of this RPC endpoint here.So the full solution could be, that you 'poll' this endpoint in a setInterval cycle, until you find a receipt for your operation, within a certain time frame.
E.g. in the next
1 minute
, call the RPC endpoint, and if a receipt matching myoperation id
is found, we can conclude that the operation was included successfully.Alternative
tezos-client
command would be:tezos-client wait for <operation hash> to be included
-
Creo queesta soluciónnoes robustaen generalporqueno segarantiza que la operaciónestéen el últimobloque.Podríaestaren unbloqueposterior y debido a queelnodo completonotiene el índice detransacciones,esposible quenopueda obtener lainformación adecuada deesamanera.Creo que OP debería construir supropiabase de datostx o confiaren unaexistente como TzScan o Conseil.I believe this solution is not robust in general because you are not guaranteed that the operation will be in the latest block. It could be in a subsequent block and because the full node does not have the transaction index you may find yourself unable to actually get the proper info that way. I believe OP should either build his own tx database or rely on an existing one like TzScan or Conseil.
- 0
- 2019-02-06
- Ezy
-
Noestoy seguro de cómoexactamente haimplementadoesto `tezos-client`,pero usar la api detzscanes unaforma.Pero creo que si comienza a sondear,antes de usareztzparainyectar una operación,seguramenteencontraráelbloque donde seincluirá la operación,amenos queeltiempo de horneado sea demasiado rápido,o sustarifas seanbajas y la operación simplementeno seráincluidoen el cortoplazo,lo queno creo que realmente suceda.I'm not sure how exactly has `tezos-client` implemented this, but using tzscan's api is one way. But i think if you start polling, before using eztz to inject an operation, you will certainly catch the block where the operation will be included, unless the baking time is too quick, or your fees are low and the operation simply won't be included anytime soon - which i don't think really happens.
- 0
- 2019-02-06
- Matej maht0rz Šima
-
También llamar aeztz.contract.send,resultaen una llamada POST a [estepuntofinal rpc] (http://tezos.gitlab.io/mainnet/api/rpc.html#post-injection-operation).Segúntengoentendido,al usar RPC sinprocesar,sumejor opciónesmirar lospróximosbloques/nuevos cabezalesparabuscar suidentificación de operación.Also calling eztz.contract.send, results into a POST call to [this rpc endpoint](http://tezos.gitlab.io/mainnet/api/rpc.html#post-injection-operation). In my understanding, using raw RPC, your best bet is to look at the upcoming blocks / new heads, to look for your operation id.
- 0
- 2019-02-06
- Matej maht0rz Šima
-
El cliente de Tezosbloquea hasta que se acepta la operación o se agotaeltiempo deespera.No desea que la aplicación OPestéescribiendoelbloqueo yel sondeo aintervalos rápidosnoes unaforma sólida.Idealmente,legustaría recibir unanotificación de queeltxfue aceptado,peroeztzno lo admite,creo.Entonces,o debe solicitar un índiceen unafrecuenciamás lenta o debe usar unnodo local quenoesbueno si desea hacer una aplicaciónmóvilTezos client blocks until it has the operation accepted or times out. You do not want the app OP is writing blocking and polling at quick interval is not a robust way. Ideally you would like to receive a notification that the tx was accepted but eztz does not support that i believe. So either you need to ask an index on a slower frequency or you need to use a local node which is not good if you want to do a mobile app
- 1
- 2019-02-06
- Ezy
-
Depende de lo queel autor quiera lograr,siestábuscando obtenernuevos valores de almacenamientoparael contrato después de que seejecutó unpunto deentrada,eztztambiénproporciona unmétodopara observarel almacenamiento del contrato.Depends on what the author wants to achieve, if he's looking to get new storage values for the contract after an entry point was executed - eztz provides a method to watch the contract's storage as well.
- 1
- 2019-02-06
- Matej maht0rz Šima
-
¡Fácilgracias!"Llamartambién aeztz.contract.send da como resultado una llamada POST aestepuntofinal de rpc. Segúntengoentendido,si usa RPC sinprocesar,lomejor quepuede haceresmirar lospróximosbloques/nuevos cabezalesparabuscar su ID de operación"buena respuesta. Solicitaré una unidad de control y sino la hay,¡miraré losbloques anteriores!Easy thanks! "Also calling eztz.contract.send, results into a POST call to this rpc endpoint. In my understanding, using raw RPC, your best bet is to look at the upcoming blocks / new heads, to look for your operation id" it is good answer. I will request a checking unit and if there isn’t there, I’ll watch the previous blocks!
- 1
- 2019-02-07
- Михаил Магомедов
-
Sondear las operaciones delencabezado actuales unabuenamanera,puede sondear durante unos 2-3minutos usandogetInterval yeltiempo deespera después deeso usandopromesas asíncronas.Lomejor sería comenzar a sondear antes o registrarel hash/nivel de cabeza actual.También debe asegurarse de que seincluyael códigoparamanejar correctamente losniveles debloques omitidos.Enbreve agregaré "esperar lainclusión de operaciones"en eztzPolling the operations of the current head is a good way, you can poll for say 2-3 minutes using getInterval and timeout after that using async promises. You would be best to start polling before, or recording the current head hash/level. You would also need to ensure code is included to correctly handle skipped block levels. I'll be adding the "wait for op inclusion" into eztz shortly
- 0
- 2019-02-07
- Stephen Andrews
-
- 2019-02-06
Entonces,sutransacción sepublicóen alphanet. Sibusca la operación
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
en TzScan (enalphanet
),semuestra aquíConel hash de latransacción yel hash debloque BMWZp5qBhoGa1V8ea que sigue lospasos de su obtener los detalles sobreel resultado
Recomendaría seguir lospasosindicadosen esta otra respuesta para obtener los detalles que desea.
Si desea hacer cosas desdeel código,deberíapoder llamar a la API de TzScan através de
Sinembargo,parece queesta llamadanofuncionapara alphanet. Preguntéen esta pregunta siesoes algo que sepuedeesperar,peroparamainnet debería ser ok.
[EDITAR] En realidad,la respuesta a la otrapreguntaes que solonecesita usar un servidor diferentepara la consultaen alphanet. Contu ophashpuedes obtener lainformación delbloque coneste comando
https://api.alphanet.tzscan.io/v3/operation/ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
So your transaction was posted in alphanet. If you search for operation
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
in TzScan (underalphanet
) it is displayed hereWith the transaction hash and block hash BMWZp5qBho1V62bb9necMuSuEaV5vm1G4Zu7mEQ7y8eaATHAfuB which contains your transaction you can follow the steps here to get the details about the outcome
I would recommend following the steps indicated in this other answer to get the details you want.
If you want to do things from code you should be able to call into the TzScan API through
https://api6.tzscan.io/v3/operation/oogKXTkRmJLBmnBQgP2My4QKRHAGLez96krSFshhg51hA8GEMVp
However it seems that this call does not work for the alphanet. I asked in this question if that's something to be expected, but for mainnet it should be ok.
[EDIT] Actually the answer to the other question is that you just need to use a different server for the query in alphanet. With your ophash you can get the block info with this command
https://api.alphanet.tzscan.io/v3/operation/ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
-
Notengo unbloque,porqueeztzen símismo hace que se reciba unbloque dentro de la operación de llamada :(I do not have a block, because eztz itself causes a block to be received inside the call operation :(
- 0
- 2019-02-06
- Михаил Магомедов
-
Agregué detallespaso apaso ahora.¡Deberíasestarbien ahora,creo!I added step-by-step details now. you should be good now i think!
- 0
- 2019-02-06
- Ezy
-
Lo sentimos,peroesta respuestanoes adecuadaparaeztz,porqueparaestas operacionesesnecesario conocer laidentificación delbloque yeztzno devuelve laidentificación delbloque después de la operación deenvío.Sorry, but this answer is not suitable for eztz, because for these operations you need to know the id of the block, and eztz doesn’t return block id after send operation
- 1
- 2019-02-06
- Михаил Магомедов
-
tienes laidentificación delbloqueen tzscan comote mostré.Elnodonomantiene un índice detransacciones,por lo quenopuede hacer una consulta (txhash=> ID debloque)en elnodo del cliente,necesitatener unabase de datos detransacciones ytzscan lo hacepor usted (o conseiltambién).espero queesto aclareyou have the id of the block in tzscan like i showed you. The node does not maintain an index of transactions so you cannot do a query (txhash=>block id) in the client node, you need to have an transaction database and tzscan does that for you (or conseil as well). hope this clarifies
- 0
- 2019-02-06
- Ezy
-
Desarrollo una aplicación y usojs,ynecesito ver latransacción desdeelnavegador del usuarioI develop app and i use js, and me need watch transaction from user browser
- 0
- 2019-02-06
- Михаил Магомедов
-
puedeenviar una consulta https atzscanpara obtener laidentificación delbloqueyou can send https query to tzscan to get the block id
- 1
- 2019-02-06
- Ezy
-
tzscannoes unafuente confiable,puede apagarseen cualquiermomentotzscan is not a reliable source, it can shut off at any time
- 0
- 2019-02-06
- Михаил Магомедов
-
Permítanos [continuaresta discusiónen el chat] (https://chat.stackexchange.com/rooms/89337/discussion-between-ezy-and--).Let us [continue this discussion in chat](https://chat.stackexchange.com/rooms/89337/discussion-between-ezy-and--).
- 0
- 2019-02-06
- Ezy
-
Estaes otraidea,pero agrega un requisito a un servicio deterceros.This is another idea, but does add a requirement to a 3rd party service.
- 0
- 2019-02-07
- Stephen Andrews
Estoy desarrollando una aplicación y uso JavaScript.Necesito ver latransacción desdeelnavegador del usuario.Utilizoelmétodoeztz
eztz.contract.send
para creartransacciones.Reciboel hash de latransacción,perono devuelvo laidentificación delbloque.¿Existe unaforma confiable de conocerelestado de latransacción deeste hashtxpara saber si la red aceptómi transacción?Enestainstanciaespecífica,estoy usando alphanet yel ophash devueltoporeztzes
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
.