マイケルソン契約を呼び出すときに戻り値を取得します
2 回答
- 投票
-
-
契約はどのようにコールバックを送信しますか?例を挙げていただけますか?(現在マイケルソンで可能であると仮定して)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契約を呼び出すと、ストレージが更新され、操作が省略されます.呼び出されたコントラクトが呼び出し元に値を返すための簡単で標準的な方法はありますか?