コントラクト内の関数を別のコントラクトの関数から呼び出す方法はありますか?
1 回答
- 投票
-
- 2019-02-14
現在、コントラクトはデータを返しません.オンチェーンのデータ送信にはコールバックを使用するか、オフチェーンのオラクルを使用する必要があります.
チェーンでは、TRANSFER_TOKENSを使用します.契約aから契約bに送信するための指示.次に、コントラクトbは別のTRANSFER_TOKENを介してデータを送り返します.コール.契約のストレージを更新して、コールバックが差し迫っていることを確認する必要があります.
Contracts don't currently return any data. You should use callbacks for on-chain data transmission, or use an off-chain oracle.
On chain, you use the TRANSFER_TOKENS; instruction to send from contract a to contract b. Contract b would then send data back via another TRANSFER_TOKEN; call. You should update the storage of contract a to acknowledge that a call back is imminent.
-
それが理論です.実際には、型システムのため、それを書くことはほとんど不可能です.BはAのタイプを知っている必要があるため、両方のコントラクトをデプロイするか、Aを認識してBと互換性のあるタイプの中間コントラクトCを作成する必要があります.ブログ投稿はまもなく投稿されます.That’s the theory. In practice, it’s almost impossible to write it, because of the type system. B has to know the type of A, so either you have to deploy both contracts, or you have to originate an intermediary contract C that knows A and has a type compatible with B. We will post a blog post on that soon.
- 2
- 2019-02-14
- lefessan
-
ええ、私たちはこれを支援するフレームワークを開発しています.Yeah, we're developing a framework to help with this.
- 0
- 2019-02-14
- Stephen Andrews
-
ある時点で、Liquidityはそれをネイティブでサポートするようになります.At some point, Liquidity will have native support for that too.
- 0
- 2019-02-14
- lefessan
-
@FLFOCPはおそらくこれを別の答えとして書きますか?@FLFOCP perhaps write this as a separate answer ?
- 0
- 2019-02-14
- Ezy
-
上記の問題に対する答えはエントリポイントです.これについては、次のブログ投稿で詳しく説明しています:https://blog.nomadic-labs.com/category/in-depth.html#multiple-entrypointsThe answer to the problems mentioned above are entrypoints, which are described in more detail in this blog post: https://blog.nomadic-labs.com/category/in-depth.html#multiple-entrypoints
- 0
- 2019-12-03
- arvidj
相互作用する必要のある機能を持つ2つの異なるコントラクトが必要です.コントラクト間の関数呼び出しを介して値を渡したり返したりする方法はありますか?