Как посмотреть статус транзакции с помощью eztz после eztz.contract.send
-
-
Возможный дубликат [Как понять,почему транзакция не удалась?] (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
-
У меня нет блока,потому чтоeztz сам вызывает получение блока внутри операции вызоваI do not have a block, because eztz itself causes a block to be received inside the call operation
- 0
- 2019-02-06
- Михаил Магомедов
-
извините,что вы имеете в виду,чтоeztz «вызывает получение блока внутри операции вызова»?Не могли бы вы предоставить более подробную информацию/информацию о том,что вы делаете и каков статус транзакции,чтобы мы четко понимали контекст.Спасибо!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
-
Может быть,идентификатор блока (eztz.rpc.getHead ()) изменится,если я получу его после вызова методаeztz.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
- Михаил Магомедов
-
для меня не имеет смысла то,что вы говорите.Вы можете вставить сюда сообщение,которое вам возвращаетeztz?так будет проще.Можете ли вы найти транзакцию в 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
-
Я используюeztz.contract.send,и он возвращает мне только хэш транзакции,ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf и как смотреть статус транзакции с помощьюeztz.Я не знаю идентификатор блокаi 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
- Михаил Магомедов
-
пойдем в чат вместо этогоlet's go to chat instead
- 0
- 2019-02-06
- Ezy
-
Давайте [продолжим эту дискуссию в чате] (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 ответ
- голосов
-
- 2019-02-13
На самом деле есть новая функция сeztz,которая теперь делает это:
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 };
Мне кажется,что использование значений по умолчанию нормально работает (ожидает примерно 3 блока).
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
Я думаю,вы можете отправить необработанный вызов rpc,используяeztz:
eztz.node.query("/chains/main/blocks/head/operations").then(function(res){ console.log(res); }).catch(function(e){});
/chains/main/blocks/head/operations
Предоставляет вам список операций,включенных в последний блок,также известный какhead
. Подробное описание этой конечной точки RPC можно найти здесь а>.Таким образом,полное решение может заключаться в том,что вы "опрашиваете" эту конечную точку в цикле setInterval,пока не найдете квитанцию о своей операции в течение определенного периода времени.
Например,в следующую
1 minute
вызовите конечную точку RPC,и если будет обнаружена квитанция,соответствующая моемуoperation id
,мы можем сделать вывод,что операция была успешно включена.Альтернативная команда
tezos-client
: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
-
Я считаю,что это решение не является надежным в целом,потому что вам не гарантируется,что операция будет выполняться в последнем блоке.Это может быть в следующем блоке,и поскольку полный узел не имеет индекса транзакции,вы можете оказаться не в состоянии получить таким образом правильную информацию.Я считаю,что OP должен либо создать свою собственную базу данныхtx,либо полагаться на существующую,такую как TzScan или 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
-
Я не уверен,как именно это реализовалtezos-client,но использование apitzscan - один из способов.Но я думаю,что если вы начнете опрос,прежде чем использоватьeztz для внедрения операции,вы обязательно поймаете блок,в который будет включена операция,если только время выпечки не слишком быстрое или ваши сборы низкие,а операция просто не будетбудет включен в ближайшее время - я не думаю,что это действительно произойдет.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
-
Также вызовeztz.contract.send приводит к вызову POST для [этой конечной точки rpc] (http://tezos.gitlab.io/mainnet/api/rpc.html#post-injection-operation).Насколько я понимаю,при использовании необработанного RPC лучше всего смотреть на предстоящие блоки/новые заголовки,чтобы найти свой идентификатор операции.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
-
Клиент Tezos блокируется до тех пор,пока операция не будет принята или не истечет время ожидания.Вы не хотите,чтобы OP приложения записывал блокировку,а опрос с коротким интервалом не является надежным способом.В идеале вы хотели бы получать уведомление о том,что TX был принят,но EZTZ не поддерживает это,я считаю.Так что либо вам нужно запросить индекс на более медленной частоте,либо вам нужно использовать локальный узел,что не подходит,если вы хотите создать мобильное приложение.Tezos 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
-
Зависит от того,чего хочет достичь автор,если он хочет получить новые значения хранилища для контракта после выполнения точки входа -eztz также предоставляет метод для наблюдения за хранилищем контракта.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
-
Легко,спасибо!«Также вызовeztz.contract.send приводит к вызову POST для этой конечной точки rpc. Насколько я понимаю,при использовании необработанного RPC лучше всего смотреть на предстоящие блоки/новые заголовки,чтобы найти свой идентификатор операции»,этохороший ответ. Запрошу блок проверки,а если его нет,посмотрю предыдущие блоки!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
- Михаил Магомедов
-
Опрос операций текущей головы - хороший способ,вы можете опросить,скажем,2-3 минуты,используяgetInterval,а затем таймаут,используя asyncpromises.Лучше всего начать опрос раньше или записать текущий хэш/уровень головы.Вам также необходимо убедиться,что включен код для правильной обработки пропущенных уровней блоков.Вскоре я добавлю в EZTZ "ждать включения операции"Polling 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
Итак,ваша транзакция была опубликована в алфавитном порядке. Если поиск работы <код> ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf код> в TzScan (при <код> Alphanet код>) он отображается здесь
С помощью хэша транзакции и хеша блока ответе ,чтобы получить нужную информацию.
Если вы хотите делать что-то из кода,вы должны иметь возможность вызывать TzScan API через
<Р> https://api6.tzscan.io/v3/operation/oogKXTkRmJLBmnBQgP2My4QKRHAGLez96krSFshhg51hA8GEMVpОднако похоже,что этот вызов не работает для алфавита. Я спросил в этом вопросе ,следует ли этого ожидать,но для основной сети это должно быть ок.
[EDIT] На самом деле ответ на другой вопрос заключается в том,что вам просто нужно использовать другой сервер для запроса в alphanet. Используя свой ophash,вы можете получить информацию о блоке с помощью этой команды
<Р> https://api.alphanet.tzscan.io/v3/operation/ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBfSo 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
-
У меня нет блока,потому чтоeztz сам вызывает получение блока внутри операции вызова :(I do not have a block, because eztz itself causes a block to be received inside the call operation :(
- 0
- 2019-02-06
- Михаил Магомедов
-
Я добавил пошаговые детали сейчас.Думаю,теперь тебе должно быть хорошо!I added step-by-step details now. you should be good now i think!
- 0
- 2019-02-06
- Ezy
-
Извините,но этот ответ не подходит дляeztz,потому что для этих операций вам нужно знать идентификатор блока,аeztz не возвращает идентификатор блока после операции отправки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
- Михаил Магомедов
-
у вас есть идентификатор блока вtzscan,как я вам показал.Узел не поддерживает индекс транзакций,поэтому вы не можете выполнять запрос (txhash=>blockid) на клиентском узле,вам нужна база данных транзакций,иtzscan сделает это за вас (или также за вас).надеюсь,это проясняетyou 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
-
Я разрабатываю приложение и используюjs,и мне нужно наблюдать за транзакцией из браузера пользователяI develop app and i use js, and me need watch transaction from user browser
- 0
- 2019-02-06
- Михаил Магомедов
-
вы можете отправить https-запрос вtzscan,чтобы получить идентификатор блокаyou can send https query to tzscan to get the block id
- 1
- 2019-02-06
- Ezy
-
tzscan не является надежным источником,его можно отключить в любой моментtzscan is not a reliable source, it can shut off at any time
- 0
- 2019-02-06
- Михаил Магомедов
-
Давайте [продолжим это обсуждение в чате] (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
-
Это еще одна идея,но она добавляет требование к сторонней службе.This is another idea, but does add a requirement to a 3rd party service.
- 0
- 2019-02-07
- Stephen Andrews
Я разрабатываю приложение и использую JavaScript.Мне нужно наблюдать за транзакцией из браузера пользователя.Я использую методeztz
eztz.contract.send
для создания транзакции.Я получаю хэш транзакции,но не возвращаю идентификатор блока.Есть ли надежный способ узнать статус транзакции этого хэшаtx,чтобы я знал,была ли моя транзакция принята сетью?В этом конкретном случае я использую alphanet,а ophash,возвращаемыйeztz,равен
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
.