eztz.contract.send 후 eztz로 거래 상태를 보는 방법
-
-
[거래가 실패한 이유를 어떻게 이해할 수 있나요?] (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.contract.send 메서드를 호출 한 후 수신하면 블록id (eztz.rpc.getHead ())가 변경 될 수 있습니까?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로 트랜잭션 상태를 보는 방법만을 반환합니다.블록 ID를 모릅니다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
eztz를 사용하여 원시 rpc 호출을 보낼 수 있다고 생각합니다.
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`가 이것을 어떻게 구현했는지 잘 모르겠지만tzscan의 API를 사용하는 것이 한 가지 방법입니다.하지만 폴링을 시작하면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를 호출하면 [this rpcendpoint] (http://tezos.gitlab.io/mainnet/api/rpc.html#post-injection-operation)에 대한 POST 호출이 발생합니다.내 이해에서 원시 RPC를 사용하는 가장 좋은 방법은 다가오는 블록/새 헤드를보고 작업 ID를 찾는 것입니다.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를 호출하면이 rpc 끝점에 대한 POST 호출이 발생합니다. 내 이해에 따르면 원시 RPC를 사용하면 다음 블록/새 헤드를보고 작업 ID를 찾는 것이 가장 좋습니다."좋은 대답입니다. 검사대를 요청하고 없을 경우 이전 블록을 볼게요!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
- Михаил Магомедов
-
현재 헤드의 작업을 폴링하는 것이 좋은 방법입니다.getInterval을 사용하여 2-3 분 동안 폴링하고 그 후 비동기 약속을 사용하여 시간 초과를 폴링 할 수 있습니다.이전에 폴링을 시작하거나 현재 헤드 해시/레벨을 기록하는 것이 가장 좋습니다.또한 건너 뛴 블록 수준을 올바르게 처리하려면 코드가 포함되어 있는지 확인해야합니다.곧eztz에 "waitfor opincluded"를 추가 할 것입니다.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
거래가 알파넷에 게시되었습니다. TzScan (
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
아래)에서alphanet
작업을 검색하면 여기트랜잭션 해시 및 블록 해시 BMWZp5qBho1mEQ7y8eaZu7mEQ7ynecMuATHAfuaV5vm1GeaZu7mEQ9vm1GeaZu7mEQbb9vm> 결과에 대한 세부 정보 얻기
원하는 세부 정보를 얻으려면 다른 답변 에 표시된 단계를 따르는 것이 좋습니다.
코드에서 작업을 수행하려면 다음을 통해 TzScan API를 호출 할 수 있어야합니다.
https://api6.tzscan.io/v3/operation/oogKHA96P2MyVKRHAGKXTkRmJLBmn>
그러나이 호출은 알파넷에서 작동하지 않는 것 같습니다. 이 질문 에서 그것이 예상되는 일인지 물었지만 메인 넷의 경우에는 네.
[편집] 실제로 다른 질문에 대한 대답은 알파넷의 쿼리에 다른 서버를 사용해야한다는 것입니다. ophash를 사용하면이 명령으로 블록 정보를 얻을 수 있습니다.
https://api.alphanet.tzscan.io/vTZ7ZpKUBZ7uNFMZ7ZpKUBZ7uNFMZZicy/ooTC8mNFMZZi
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
-
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에 적합하지 않습니다. 이러한 작업의 경우 블록의 ID를 알아야하고eztz는 전송 작업 후에 블록 ID를 반환하지 않기 때문입니다.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에 블록의 ID가 있습니다.노드는 트랜잭션 인덱스를 유지하지 않으므로 클라이언트 노드에서 쿼리 (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에 보내 블록 ID를 얻을 수 있습니다.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
를 사용합니다.트랜잭션 해시를 다시 받았지만 블록 ID는 반환하지 않습니다.이tx 해시의 거래 상태를 알 수있는 신뢰할 수있는 방법이있어 내 거래가 네트워크에서 수락되었는지 알 수 있나요?이 특정 인스턴스에서 저는 알파넷을 사용하고 있으며eztz에서 반환 한 ophash는
ooTC8mMZ7dG1ReCXLPiTAN3qEUB7uNFuh9R8KZXEFbZZiZcypBf
입니다.