Cómo hacer una conexión entre dos direcciones de contrato inteligente diferentes

Por ejemplo, el contrato "ABC" utilizará las propiedades y métodos "XYZ". Ambos propietarios del contrato son los mismos.

Gracias

Respuestas (2)

Prueba este código en 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();
    }
}

Primero, implemente el contrato XYZ. Luego, implemente el contrato ABCutilizando la dirección del XYZcontrato implementado. Cuando haya terminado, intente llamar ABCal interactWithXYZ()método. Verá un evento en la consola.

Tienes que crear una interfaz con todos los métodos de tu contrato XYZ

interface IXYZ {
function doSomething() external;

}

y luego lo llama dentro de su contrato donde desea usarlo con el contrato de dirección

IXYZ(xyz_).doSomething();