So stellen Sie eine Verbindung zwischen zwei verschiedenen Smart-Contract-Adressen her

B. „ABC“-Vertrag wird „XYZ“-Eigenschaften und -Methoden verwenden Beide Vertragsinhaber sind gleich.

Danke

Antworten (2)

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 ABCunter Verwendung der Adresse des bereitgestellten XYZVertrags bereit. Wenn das erledigt ist, versuchen Sie, die Methode ABCvon 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();