Skip to content

Latest commit

 

History

History
609 lines (504 loc) · 17.5 KB

IERC777.md

File metadata and controls

609 lines (504 loc) · 17.5 KB

IERC777.sol

View Source: contracts/interfaces/IERC777.sol

IERC777 contract

Interface of the ERC777Token standard as defined in the EIP.

  • This contract uses the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let token holders and recipients react to token movements by using setting implementers for the associated interfaces in said registry. See {IERC1820Registry} and {ERC1820Implementer}.

Events

event Sent(address indexed operator, address indexed from, address indexed to, uint256  amount, bytes  data, bytes  operatorData);
event Minted(address indexed operator, address indexed to, uint256  amount, bytes  data, bytes  operatorData);
event Burned(address indexed operator, address indexed from, uint256  amount, bytes  data, bytes  operatorData);
event AuthorizedOperator(address indexed operator, address indexed tokenHolder);
event RevokedOperator(address indexed operator, address indexed tokenHolder);

Functions


name

Returns the name of the token.

function name() external view
returns(string)
Source Code
function name() external view returns (string memory);

symbol

Returns the symbol of the token, usually a shorter version of the name.

function symbol() external view
returns(string)
Source Code
function symbol() external view returns (string memory);

granularity

Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number. * For most token contracts, this value will equal 1.

function granularity() external view
returns(uint256)
Source Code
function granularity() external view returns (uint256);

totalSupply

⤿ Overridden Implementation(s): IERC20.totalSupply

Returns the amount of tokens in existence.

function totalSupply() external view
returns(uint256)
Source Code
function totalSupply() external view returns (uint256);

balanceOf

⤿ Overridden Implementation(s): IERC20.balanceOf

Returns the amount of tokens owned by an account (owner).

function balanceOf(address owner) external view
returns(uint256)

Arguments

Name Type Description
owner address
Source Code
function balanceOf(address owner) external view returns (uint256);

send

Moves amount tokens from the caller's account to recipient. * If send or receive hooks are registered for the caller and recipient, the corresponding functions will be called with data and empty operatorData. See {IERC777Sender} and {IERC777Recipient}. * Emits a {Sent} event. * Requirements * - the caller must have at least amount tokens.

  • recipient cannot be the zero address.
  • if recipient is a contract, it must implement the {IERC777Recipient} interface.
function send(address recipient, uint256 amount, bytes data) external nonpayable

Arguments

Name Type Description
recipient address
amount uint256
data bytes
Source Code
function send(
        address recipient,
        uint256 amount,
        bytes calldata data
    ) external;

burn

Destroys amount tokens from the caller's account, reducing the total supply. * If a send hook is registered for the caller, the corresponding function will be called with data and empty operatorData. See {IERC777Sender}. * Emits a {Burned} event. * Requirements * - the caller must have at least amount tokens.

function burn(uint256 amount, bytes data) external nonpayable

Arguments

Name Type Description
amount uint256
data bytes
Source Code
function burn(uint256 amount, bytes calldata data) external;

isOperatorFor

Returns true if an account is an operator of tokenHolder. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. * See {operatorSend} and {operatorBurn}.

function isOperatorFor(address operator, address tokenHolder) external view
returns(bool)

Arguments

Name Type Description
operator address
tokenHolder address
Source Code
function isOperatorFor(address operator, address tokenHolder) external view returns (bool);

authorizeOperator

Make an account an operator of the caller. * See {isOperatorFor}. * Emits an {AuthorizedOperator} event. * Requirements * - operator cannot be calling address.

function authorizeOperator(address operator) external nonpayable

Arguments

Name Type Description
operator address
Source Code
function authorizeOperator(address operator) external;

revokeOperator

Make an account an operator of the caller. * See {isOperatorFor} and {defaultOperators}. * Emits a {RevokedOperator} event. * Requirements * - operator cannot be calling address.

function revokeOperator(address operator) external nonpayable

Arguments

Name Type Description
operator address
Source Code
function revokeOperator(address operator) external;

defaultOperators

Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. * This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.

function defaultOperators() external view
returns(address[])
Source Code
function defaultOperators() external view returns (address[] memory);

operatorSend

Moves amount tokens from sender to recipient. The caller must be an operator of sender. * If send or receive hooks are registered for sender and recipient, the corresponding functions will be called with data and operatorData. See {IERC777Sender} and {IERC777Recipient}. * Emits a {Sent} event. * Requirements * - sender cannot be the zero address.

  • sender must have at least amount tokens.
  • the caller must be an operator for sender.
  • recipient cannot be the zero address.
  • if recipient is a contract, it must implement the {IERC777Recipient} interface.
function operatorSend(address sender, address recipient, uint256 amount, bytes data, bytes operatorData) external nonpayable

Arguments

Name Type Description
sender address
recipient address
amount uint256
data bytes
operatorData bytes
Source Code
function operatorSend(
        address sender,
        address recipient,
        uint256 amount,
        bytes calldata data,
        bytes calldata operatorData
    ) external;

operatorBurn

Destoys amount tokens from account, reducing the total supply. The caller must be an operator of account. * If a send hook is registered for account, the corresponding function will be called with data and operatorData. See {IERC777Sender}. * Emits a {Burned} event. * Requirements * - account cannot be the zero address.

  • account must have at least amount tokens.
  • the caller must be an operator for account.
function operatorBurn(address account, uint256 amount, bytes data, bytes operatorData) external nonpayable

Arguments

Name Type Description
account address
amount uint256
data bytes
operatorData bytes
Source Code
function operatorBurn(
        address account,
        uint256 amount,
        bytes calldata data,
        bytes calldata operatorData
    ) external;

Contracts