私は、契約を他の契約の機能を呼び出すことができる機能にしようとしています。私の目標の重要な部分は、契約書は輸入声明なしでは展開できず、デフォルトで契約名を知らないということです。換言すると、この契約のユーザは、呼び出された契約データ(すなわち、住所、名前)をパラメータとして入力する。これを達成する最良の方法は何ですか?外部契約を強固に呼び出す
4
A
答えて
5
なぜこれがダウンリストされたのか分かりません。
質問が正しくとわかっている場合は、通信する必要がある契約の具体的な詳細を知らなくても契約を展開したいと考えています。
インターフェイスの知識があると仮定することで、これを大幅に簡略化できます。
契約コードをインポートせずにインタフェースを定義することができます。関数インタフェースを定義し、空の関数定義を残す:
contract WidgetInterface {
function doSomething() returns(uint) {}
function somethingElse() returns(bool isTrue) {}
}
使用できるインターフェイスの契約は、実際の契約に話をすること:
WidgetInterface w = WidgetInterface(actualContractAddress);
私の意見では、通常、認可登録することが可能と賢明だろう/あなたが行くように有効な契約。これらの線に沿って、それが安全に話すことができる契約のリストを維持:
if(!isAuthorized(actualContractAddress)) throw;
actualContractAddress
が送信者によって供給され
とisAuthorized()
は、あなたが内部のレジストリを照会するために働いている機能です。
希望します。
0
Rob Hitchensの示唆したように、インターフェイスを使用してこれを行うこともできます。また、インターフェイスを動的に定義し、.call、.callcode、.delegatecallを使用してメソッドを実行することもできます。ここ
は、例えば次のとおり
contract ContractsCaller {
function execute(address contractAt, uint _i, bytes32 _b) returns (bool) {
return contractAt.call(bytes4(sha3("testMethod(uint256,bytes32)")), _i, _b);
}
}
contract Test {
uint256 public i;
bytes32 public b;
function testMethod(uint256 _i, bytes32 _b) {
i = _i;
b = _b;
}
}
テストは別のファイルに定義することができます。 ContractsCallerは、そのアドレスと呼び出しているメソッドのシグネチャ以外に、Testについて何も知る必要はありません。
メソッドのシグネチャはメソッド名の最初の4バイトとそのパラメータのタイプである:
bytes4(sha3("testMethod(uint256,bytes32)"))
関連する問題
- 1. 固執 - スマート契約インスタンスを外部契約から呼び出す方法?
- 2. 強要:別の契約と住所を呼び出す契約が異なる理由は何ですか?
- 3. 複数の呼び出しに関するIConnectableObservable.Connectの契約
- 4. Ethereumにすでに展開されている契約から契約機能を呼び出す方法
- 5. 他の契約から関数を呼び出すsolidity
- 6. どのように契約の強固な状態を取得するには?
- 7. Firebaseのルール - 共有ユーザー契約とユーザー固有の契約
- 8. サービス契約に動的に追加された操作を呼び出す
- 9. 外部URLを呼び出す
- 10. Javascriptで外部APIを呼び出す
- 11. Pythonの外部コマンドを呼び出す
- 12. 別の契約の中で契約のインスタンスを作成し、そのメソッドを呼び出すと例外がスローされます
- 13. soap.jsからのメッセージ契約であるsoapメソッドを呼び出す
- 14. WCFで片方向操作契約を呼び出せません
- 15. 外部アプリケーションの呼び出し
- 16. エラーが外部関数呼び出し
- 17. クラスと外部メソッド呼び出し
- 18. 外部メソッド呼び出しヘルプ
- 19. 呼び出し外クラスの内部クラス
- 20. Grails 3外部メソッドの呼び出し
- 21. Java:匿名の内部クラスで外部クラスメソッドを呼び出す
- 22. Django Restフレームワーク:外部APIから内部APIを呼び出す
- 23. pthreadを外部にラップしてメンバーfuncを呼び出す
- 24. コールバック中にクラス関数の外部オブジェクトを呼び出す
- 25. couchdb関数の外部に変数を呼び出す?
- 26. レールを外部データベース呼び出しにする方法は?
- 27. C#(httpwebrequest)で外部サイトにPOSTを呼び出す
- 28. sconsに外部スクリプトを呼び出す方法は?
- 29. 外部クラスをAngularJSコントローラに呼び出す方法
- 30. 外部APIからRails 5アプリケーションにデータを呼び出す