B. „ABC“-Vertrag wird „XYZ“-Eigenschaften und -Methoden verwenden Beide Vertragsinhaber sind gleich.
Danke
Versuchen Sie diesen Code in Remix:
pragma solidity 0.4.24;
contract XYZ {
address public owner;
constructor() public {
owner = msg.sender;
}
function doSomething() external {
emit SomethingDone(address(this));
}
event SomethingDone(address _addr);
}
contract ABC {
address public owner;
XYZ xyz_;
constructor(XYZ _xyz) public {
xyz_ = _xyz;
owner = msg.sender;
}
function interactWithXYZ() external {
xyz_.doSomething();
}
}
Stellen Sie zuerst den Vertrag bereit XYZ
. Stellen Sie dann den Vertrag ABC
unter Verwendung der Adresse des bereitgestellten XYZ
Vertrags bereit. Wenn das erledigt ist, versuchen Sie, die Methode ABC
von aufzurufen interactWithXYZ()
. Sie sehen ein Ereignis in der Konsole.
Sie müssen eine Schnittstelle mit allen Methoden Ihres Vertrags XYZ erstellen
interface IXYZ {
function doSomething() external;
}
und dann rufen Sie es in Ihrem Vertrag auf, wo Sie es mit dem Adressvertrag verwenden möchten
IXYZ(xyz_).doSomething();