Skip to content

Commit

Permalink
Document interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
axic committed Mar 17, 2017
1 parent cfab70f commit 3f14681
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions docs/contracts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,33 @@ Such contracts cannot be compiled (even if they contain implemented functions al

If a contract inherits from an abstract contract and does not implement all non-implemented functions by overriding, it will itself be abstract.

.. index:: ! contract;interface, ! interface contract

**********
Interfaces
**********

Interfaces are similar to abstract contracts, but they cannot have any functions implemented. There are further restrictions:

#. Cannot inherit other contracts or interfaces.
#. Cannot define variables.
#. Cannot define structs.

Some of these restrictions might be lifted in the future.

Interfaces are basically limited to what the Contract ABI can represent and the conversion between the ABI and
an Interface should be possible without any information loss.

Interfaces are denoted by their own keyword:

::

interface Token {
function transfer(address recipient, uint amount);
}

Contracts can inherit interfaces as they would inherit other contracts.

.. index:: ! library, callcode, delegatecall

.. _libraries:
Expand Down

0 comments on commit 3f14681

Please sign in to comment.