В чем разница между абстрактным контрактом и интерфейсом?

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

Почему нам даже нужны интерфейсы?

 pragma solidity ^0.4.16;

contract d7 {
    function getBalance(address addr) pure public returns (uint) {
        d8 bg = d8(addr);
    return bg.myBalance();
    }
}

contract d8 {
    function myBalance() pure  returns (uint);

}

Тогда d8 -

pragma solidity ^0.4.18;

contract d8 {

    function myBalance() pure public returns (uint) {
        return 880;
    }

}

Следовательно, я могу оставить d7 без изменений и перераспределить d8, а затем предоставить новый адрес d7. Для меня это звучит неплохо. Но я не уверен в терминологии, чтобы описать этот контракт, а также почему используется ключевое слово интерфейса.

3 голоса | спросил Trevor Oakley 12 MaramMon, 12 Mar 2018 09:40:57 +03002018-03-12T09:40:57+03:0009 2018, 09:40:57

1 ответ


2

От документация Solidity 0.4.20 ,

  

Интерфейсы похожи на абстрактные контракты, но они не могут   функции реализованы. Существуют следующие ограничения:

     
  1. Невозможно наследовать другие контракты или интерфейсы.
  2.   
  3. Невозможно определить конструктор.
  4.   
  5. Невозможно определить переменные.
  6.   
  7. Невозможно определить структуры.
  8.   
  9. Невозможно определить перечисления.
  10.   

Некоторые из этих ограничений могут быть сняты в будущем.

     

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

Итак, я думаю, основное отличие состоит в том, что none функций в интерфейсе может быть реализовано. В абстрактном контракте вы можете реализовать некоторые и до тех пор, пока вы оставите хотя бы один нереализованный, он все еще абстрактный.

ответил AnAllergyToAnalogy 12 MaramMon, 12 Mar 2018 11:30:58 +03002018-03-12T11:30:58+03:0011 2018, 11:30:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132