Должен ли контракт интерфейса Solidity реализовывать все функции или только подмножество функций, используемое в контракте, который реализует интерфейс?

Предположим следующее:

  • Существует основной контракт A, интерфейсный контракт IB и подчиненный контракт B.
  • A реализует IB, чтобы позволить обновление B без повторного развертывания A

Вопрос:

Должен ли IB иметь все функции B или только те, которые использует A?

Интерфейсы не реализуют контракты: контракты реализуют интерфейсы. Какая здесь цепочка наследования? А->ИБ->Б? Кажется странным, и IB не нужно ничего реализовывать. Или это интерфейс I с контрактами A и B, реализующий I? То, что входит в I, будет тем, что вам нужно реализовать как A, так и B: каждый из A и B может иметь дополнительные функции.

Ответы (1)

Согласно моему опыту в следующем коде

https://gist.github.com/anonymous/c23f944b139a76693abbae261ad577b8

достаточно реализовать те, которые вы используете. В примере:

/// ---- dataStorage interface
contract dataStorage {
    function getBalanceOf(address _account) constant returns (uint256 balance);
    function setBalanceOf(address _account, uint256 _value);
}
Вы скомпилировали и развернули его?
Да, с использованием браузера-солидности + метамаски: он развернут на testnet.etherscan.io/address/…