Да на оба эти вопроса - простой пример для иллюстрации будет выглядеть примерно так:
contract HelperContract {
function foo() public pure returns(uint) {
return(0);
}
}
contract MainContract {
HelperContract helperContract;
function MainContract(address helperAddress) public {
helperContract = HelperContract(helperAddress);
}
function bar() public view returns(uint) {
return helperContract.foo();
}
}
После развертывания HelperContract
и создания экземпляра MainContract
с уже развернутым адресом HelperContract мы можем вызвать bar
, который, в свою очередь, вызовет foo
.
Вы можете скопировать и вставить этот код в remix и довольно быстро убедитесь, что это так.
Если вы хотите увидеть реальный пример помимо типа Hello world!
, вы можете просмотреть CryptoKitties здесь, где они используют этот тип шаблона.
Это довольно объемный код, но вы можете поискать KittyAuction
контракт, который содержит методы setSaleAuctionAddress
и setSiringAuctionAddress
. Эти функции устанавливают ссылки на отдельно развернутые SaleClockAuction
и SiringClockAuction
контракты соответственно.
person
elsyr
schedule
23.12.2017