Come guardare lo stato della transazione con eztz dopo eztz.contract.send
-
-
Possibile duplicato di [Comeposso capireperché unatransazionenon è andata abuonfine?] (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
-
Non ho unblocco,perchéeztz stessofa sì che unblocco venga ricevuto all'interno dell'operazione di chiamataI do not have a block, because eztz itself causes a block to be received inside the call operation
- 0
- 2019-02-06
- Михаил Магомедов
-
scusa cosa vuoi dire coneztz "provoca la ricezione di unblocco all'interno dell'operazione di chiamata"?Siprega diforniremaggiori dettagli/informazioni su ciò che si stafacendoe qual è lo stato dellatransazionein modo da comprendere chiaramenteil contesto.Grazie!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
-
Potrebbeessere che l'id delblocco (eztz.rpc.getHead ()) cambierà se lo ricevo dopo aver chiamatoilmetodoeztz.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
- Михаил Магомедов
-
non ha sensoperme quello che dici.Puoiincollare quiilmessaggio cheti restituisceeztz?saràpiù semplicein questomodo.Riesci atrovare latransazionein 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
-
io usoeztz.contract.sende luimi restituisce solo l'hash dellatransazione,ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBfe comeguarda lo stato dellatransazione coneztz.Non conosco l'ID delbloccoi 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
- Михаил Магомедов
-
andiamoinvece a chattarelet's go to chat instead
- 0
- 2019-02-06
- Ezy
-
Cerchiamo di [continuare questa discussionein 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 risposta
- voti
-
- 2019-02-13
Esiste attualmente unanuovafunzione coneztz che lofa ora:
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 };
L'utilizzo delleimpostazionipredefinite sembrafunzionarebene perme (attende circa 3blocchi).
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
Penso chepotrestiinviare una chiamata rpcnonelaborata utilizzandoeztz:
eztz.node.query("/chains/main/blocks/head/operations").then(function(res){ console.log(res); }).catch(function(e){});
/chains/main/blocks/head/operations
Fornisce unelenco di operazioniinclusenell'ultimoblocconoto anche comehead
. Puoitrovare una spiegazione dettagliata di questoendpoint RPC qui .Quindi la soluzione completapotrebbeessere quella dieseguireil "polling" di questoendpointin un ciclo setInterval,finchénontrovi una ricevutaper latua operazione,entro un certoperiodo ditempo.
Adesempionelprossimo
1 minute
,chiama l'endpoint RPCe se vienetrovata una ricevuta corrispondente almiooperation id
,possiamo concludere che l'operazione è statainclusa correttamente.Il comando
tezos-client
alternativo sarebbe: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
-
Credo che questa soluzionenon siageneralmente robustaperchénon ègarantito che l'operazione avverrànell'ultimoblocco.Potrebbeesserein unblocco successivoe poichéilnodo completonon ha l'indice ditransazionepotrestinonesserein grado di ottenereeffettivamente leinformazioni correttein questomodo.Credo che OP dovrebbe costruireilproprio databasetx ofare affidamento su unoesistente come 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
-
Non sono sicuro di comeesattamente `tezos-client` lo abbiaimplementato,ma usare l'API ditzscan è unmodo.Mapenso che seiniziilpolling,prima di usareeztzperiniettare un'operazione,sicuramente cattureraiilbloccoin cui l'operazione saràinclusa,ameno cheiltempo di cotturanon siatroppo veloce,o letuetariffe sianobassee l'operazione semplicementenon lo saràinclusoin qualsiasimomentopresto,cosa chenon credo accada davvero.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
-
Chiamando ancheeztz.contract.send,si ottiene una chiamata POST a [questoendpoint rpc] (http://tezos.gitlab.io/mainnet/api/rpc.html#post-injection-operation).Nellamia comprensione,utilizzando RPCgrezzo,la soluzionemigliore èguardarei blocchiimminenti/nuoveteste,per cercareiltuo ID operazione.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
-
Il client Tezos sibloccafinché l'operazionenon viene accettata o scade.Non vuoi che l'app OP stia scrivendoilbloccoe ilpolling aintervalli rapidinon è unmodo robusto.Idealmente vorresti ricevere unanotifica cheiltx è stato accettatomaeztznon supporta quello che credo.Quindi o devi chiedere unindice su unafrequenzapiù lenta o devi usare unnodo locale chenon vabene se vuoifare un'appmobileTezos 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
-
Dipende da ciò che l'autore vuole ottenere,se sta cercando di ottenerenuovi valori di archiviazioneperil contratto dopo l'esecuzione di unpunto diingresso:eztzfornisce anche unmetodoper controllare l'archiviazione del contratto.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
-
Graziefacile!"Anche la chiamata aeztz.contract.send,sitraducein una chiamata POST a questoendpoint rpc. A quantomi risulta,utilizzando RPCgrezzo,la soluzionemigliore èguardarei blocchiimminenti/nuoveteste,per cercareiltuo ID operazione" èbuona risposta. Chiederò un'unità di controlloe senon c'è,guarderòi blocchiprecedenti!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
- Михаил Магомедов
-
Ilpolling delle operazioni dellatestina corrente è unbuonmodo,puoieseguireilpollingper diciamo 2-3minuti usandogetIntervale iltimeout successivo usando lepromesse asincrone.Sarebbemeglioiniziareilpollingprima o registrareil livello/hash head corrente.Dovresti anche assicurarti cheil codice siainclusopergestire correttamentei livelli diblocco saltati.Abreve aggiungerò "attendiinclusione op"in 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
Quindi latuatransazione è statapubblicatain alphanet. Se cerchi l'operazione
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
in TzScan (sottoalphanet
),viene visualizzato quiCon l'hash dellatransazionee dell'hash delblocco BMWZp5qBaV627 contienei passaggi chepuoi seguireper latransazione BMWZp5qBaV627peri tuoipassaggi ottenerei dettagli sul risultato
Ti consiglio di seguirei passaggiindicatiin quest'altra risposta per ottenerei dettagli desiderati.
Se vuoifare cose dal codice dovrestiesserein grado di chiamare l'API TzScantramite
https://api6.tzscan.io/v3/operation/oogKXTkRmJLBmnBQgP2My4QKRHAGLez96krSFshhg51hA8GEMVp
Tuttavia sembra che questa chiamatanonfunzioniper Alpha. Ho chiestoin questa domanda se è qualcosa che ci si aspetta,mapermainnet dovrebbeessere ok.
[EDIT] In realtà la risposta all'altra domanda è che devi solo usare un server diversoper la queryin alphanet. Coniltuo ophashpuoi ottenere leinformazioni sulblocco con questo 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
-
Non ho unblocco,perchéeztz stessofa sì che unblocco venga ricevuto all'interno dell'operazione di chiamata :(I do not have a block, because eztz itself causes a block to be received inside the call operation :(
- 0
- 2019-02-06
- Михаил Магомедов
-
Ho aggiuntoi dettaglipassopasso ora.dovrestiesserebravo orapenso!I added step-by-step details now. you should be good now i think!
- 0
- 2019-02-06
- Ezy
-
Spiacenti,ma questa rispostanon è adattapereztz,perchéper queste operazioni ènecessario conoscere l'id delbloccoe eztznon restituisce l'id delblocco dopo l'operazione diinvioSorry, 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
- Михаил Магомедов
-
hai l'ID delbloccoin tzscan cometi homostrato.Ilnodononmantiene unindice delletransazioni,quindinonpuoieseguire una query (txhash=>blockid)nelnodo client,devi avere un database delletransazionie tzscan lofaperte (o ancheper conseil).spero che questo chiariscayou 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
-
Sviluppo appe utilizzojse hobisogno diguardare latransazione dalbrowser dell'utenteI develop app and i use js, and me need watch transaction from user browser
- 0
- 2019-02-06
- Михаил Магомедов
-
puoiinviare una query https atzscanper ottenere l'ID delbloccoyou can send https query to tzscan to get the block id
- 1
- 2019-02-06
- Ezy
-
tzscannon è unafonte affidabile,può spegnersiin qualsiasimomentotzscan is not a reliable source, it can shut off at any time
- 0
- 2019-02-06
- Михаил Магомедов
-
Cerchiamo di [continuare questa discussionein 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
-
Questa è un'altraidea,ma aggiunge un requisito a un servizio diterzeparti.This is another idea, but does add a requirement to a 3rd party service.
- 0
- 2019-02-07
- Stephen Andrews
Sto sviluppando un'appe utilizzo JavaScript.Hobisogno diguardare latransazione dalbrowser dell'utente.Usoilmetodoeztz
eztz.contract.send
per creare latransazione.Ricevoindietro l'hash dellatransazione,manon restituisco l'ID delblocco.Esiste unmodo affidabileper conoscere lo stato dellatransazione di questo hashtxin modo da sapere se lamiatransazione è stata accettata dalla rete?In questo caso specifico sto usando alphanete l'ophash restituito daeztz è
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
.