Michelson 계약을 호출 할 때 반환 된 값을 가져옵니다
2 대답
- 투표
-
-
계약은 어떻게 콜백을 보내나요?예를 들어 주시겠습니까?(현재 Michelson에서 가능하다고 가정)How would a contract send a callback? Can you please provide an example? (assuming it's possible currently in Michelson)
- 2
- 2019-02-06
- Matej maht0rz Šima
-
-
- 2019-02-06
제 생각에
parametrised transaction
아래에 작업으로 삽입 된/injection/operation
을 전송하여 계약을 호출 할 수 있습니다.위의 흐름은 eztz의 출처에서 추적 할 수 있습니다. .js .
parametrised transaction
는 더 많은 것을 반환하지 않지만 방금 주입 한 작업의 해시입니다. ($unistring
에 대한 언급이 있지만 지금은 그것이 무엇을 나타내는 지 잘 모르겠습니다)내 생각에는 새로운 블록에 작업이 주입 될 즈음에 스마트 계약이 실행된다는 것입니다. (여기에서 나를 당연하게 여기지 마십시오. Tezos에 대한 리소스를 찾을 수 없었습니다.하지만 이것이 이더 리움에서 작동하는 방식입니다)
따라서 언제든지
.../contract/<contract_id>/storage
-이는 계약 반환 값의 일부를 나타냅니다. 그러나 수술이 처리 된 후에 만 가능합니다.그리고 스마트 계약에 의해 실행되는 작업을 추출하는 방법이 있어야한다고 생각합니다. RPC 응답을 충분히 자세히 살펴보면 계약 주소에서 오는 작업을 찾을 것입니다.
사실 TzScan의 스마트 계약 예시 를 볼 수 있습니다. 현재 스토리지를 매개 변수로받은 값으로 설정합니다. 트랜잭션 및 작업을 드릴 다운하여 시간이 지남에 따라 어떻게 업데이트되었는지 확인할 수 있습니다. 그러면 RPC를 통해 필요한 정보를 찾을 수있는 위치를 알 수 있습니다.
In my understanding, you can call a contract by sending a
parametrised transaction
, that's injected as an operation under/injection/operation
.You can trace the flow above in the source of eztz.js.
/injection/operation
doesn't return much more, but a hash of the operation you've just injected. (there is a mention of a$unistring
although i'm not sure what it represents right now)My guess is also that smart contract gets executed, around the time when an operation is injected into a new block. (Don't take me for granted here, i was unable to find resources on this for Tezos, but that's how it works with ethereum)
So you can always get the contract's storage using
.../contract/<contract_id>/storage
- this'd represent one part of your contract's return value. But only after your operation has been processed.And i think there should be a way to extract the operations executed by your smart contract, if you look deep enough into the RPC responses, i'd look for operations coming from your contract's address.
In fact, you can see an example smart contract on TzScan, all it seems to do is set the current storage to a value received as a parameter. You can drill down trough the transactions and operations to see how it was updated over time - this should give you an idea of where to find the required information via RPC.
Michelson 계약을 호출하면 스토리지가 업데이트되고 작업이 배출됩니다.호출 된 계약이 호출자에게 값을 반환하는 간단하고 표준적인 방법이 있습니까?