Если я пишу два контракта A, B и расширяю один другим, могу ли я использовать методы из контракта A в контракте B при развертывании?

Если у меня есть два контракта, расширяющих один с другим, могу ли я использовать методы, доступные в одном контракте, в другом, когда я развернул их. Мы должны взять их в один файл или развернуть по-разному и получить их по адресам.

Ответы (2)

Наследование не является функцией Ethereum, но вы можете использовать его на этапе разработки для улучшения обслуживания кода. Например, вы можете использовать наследование в Solidity . В любом случае все родительские контракты будут включены в скомпилированный контракт, поэтому он будет содержать весь код, необходимый для работы в качестве единого контракта.

Даже если контракт наследуется от нескольких других контрактов, в блокчейне создается только один контракт, код из базовых контрактов всегда копируется в окончательный контракт.

Более того, Ethereum позволяет контракту вызывать код из другого контракта (т.е. вызывать функцию другого контракта ), но это не имеет ничего общего с наследованием контрактов.

Наследование в Solidity работает так же, как и во многих oop-языках, то есть, конечно, вы можете вызывать родительскую функцию, см. Solidity в вики .

Также оба контракта могут находиться в одном и том же файле или в отдельных файлах, если они созданы вместе, чтобы работало наследование на основе имени.

Обратите внимание, что оба контракта будут иметь отдельные адреса, поэтому вы также можете вызывать функцию родительского или дочернего контракта, используя его адрес.