Blockwell

SKALE

ERC20

This contract is an ERC20 token.

Name SKALE
Symbol SKL
Decimals 18
Total Supply 4,309,175,751 SKL

About link description

SKALE Network (SKL) is a cryptocurrency and operates on the Ethereum platform. SKALE Network has a current supply of 4,276,664,349 with 1,213,100,288 in circulation. The last known price of SKALE Network is 0.21120668 USD and is down -0.58 over the last 24 hours. It is currently trading on 43 active market(s) with $28,686,553.75 traded over the last 24 hours. More information can be found at https://skale.network/.

Stats

Public Functions 30
Event Types 9
Code Size 217,794 bytes

Library Use

Uses SafeMath for uint.

Events (9) keyboard_arrow_up

Approval Event

Parameters help
owner
address help
spender
address help
value
uint256 help

AuthorizedOperator Event

Parameters help
operator
address help
tokenHolder
address help

Burned Event

Parameters help
operator
address help
from
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

Minted Event

Parameters help
operator
address help
to
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

RevokedOperator Event

Parameters help
operator
address help
tokenHolder
address help

RoleGranted Event

Parameters help
role
bytes32 help
account
address help
sender
address help

RoleRevoked Event

Parameters help
role
bytes32 help
account
address help
sender
address help

Sent Event

Parameters help
operator
address help
from
address help
to
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

Transfer Event

Parameters help
from
address help
to
address help
value
uint256 help

NAME Constant

string help
SKALE

SYMBOL Constant

string help
SKL

DECIMALS Constant

uint help
18

CAP Constant

uint help
7 * 1e9 * UNKNOWN VALUE

_ERC1820_REGISTRY Constant

IERC1820Registry help

_TOKENS_SENDER_INTERFACE_HASH Constant

bytes32 help
0x29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe895

_TOKENS_RECIPIENT_INTERFACE_HASH Constant

bytes32 help
0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b

DEFAULT_ADMIN_ROLE Constant

bytes32 help
0x00

_NOT_ENTERED Constant

uint256 help
1

_ENTERED Constant

uint256 help
2

contractManager Variable

address help

_balances Variable

mapping(address => uint256) help
Internal Variable

_totalSupply Variable

uint256 help
Internal Variable

_name Variable

string help
Internal Variable

_symbol Variable

string help
Internal Variable

_defaultOperatorsArray Variable

address[] help
Internal Variable

_defaultOperators Variable

mapping(address => bool) help
Internal Variable

_operators Variable

mapping(address => mapping(address => bool)) help
Internal Variable

_revokedDefaultOperators Variable

mapping(address => mapping(address => bool)) help
Internal Variable

_allowances Variable

mapping(address => mapping(address => uint256)) help
Internal Variable

_roles Variable

mapping(bytes32 => RoleData) help
Internal Variable

__gap Variable

uint256[] help
Internal Variable

initialized Variable

bool help
Internal Variable

initializing Variable

bool help
Internal Variable

______gap Variable

uint256[] help
Internal Variable

__gap Variable

uint256[] help
Internal Variable

_status Variable

uint256 help
Internal Variable

Functions Expand All Collapse All

hasRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help public
Mutability help view
Source Code
function hasRole(bytes32 role, address account) public view returns (bool) {
  return _roles[role].members.contains(account);
}

getRoleMemberCount keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help

Properties

Visibility help public
Mutability help view
Source Code
function getRoleMemberCount(bytes32 role) public view returns (uint256) {
  return _roles[role].members.length();
}

getRoleMember keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
index
uint256 help

Properties

Visibility help public
Mutability help view
Source Code
function getRoleMember(bytes32 role, uint256 index)
  public
  view
  returns (address)
{
  return _roles[role].members.at(index);
}

getRoleAdmin keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help

Properties

Visibility help public
Mutability help view
Source Code
function getRoleAdmin(bytes32 role) public view returns (bytes32) {
  return _roles[role].adminRole;
}

grantRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

null
Source Code
function grantRole(bytes32 role, address account) public virtual {
  require(
    hasRole(_roles[role].adminRole, _msgSender()),
    "AccessControl: sender must be an admin to grant"
  );

  _grantRole(role, account);
}

revokeRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

null
Source Code
function revokeRole(bytes32 role, address account) public virtual {
  require(
    hasRole(_roles[role].adminRole, _msgSender()),
    "AccessControl: sender must be an admin to revoke"
  );

  _revokeRole(role, account);
}

renounceRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function renounceRole(bytes32 role, address account) public virtual {
  require(
    account == _msgSender(),
    "AccessControl: can only renounce roles for self"
  );

  _revokeRole(role, account);
}

initialize keyboard_arrow_up

Parameters help

Name Type
contractManagerAddress
address help

Properties

Visibility help public
Mutability help transaction

Modifiers help

Requirements help

Source Code
function initialize(address contractManagerAddress) public virtual initializer {
  AccessControlUpgradeSafe.__AccessControl_init();
  _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
  _setContractManager(contractManagerAddress);
}

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function name() public view override returns (string memory) {
  return _name;
}

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function symbol() public view override returns (string memory) {
  return _symbol;
}

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help pure
Source Code
function decimals() public pure returns (uint8) {
  return 18;
}

granularity keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function granularity() public view override returns (uint256) {
  return 1;
}

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function totalSupply() public view override(IERC20, IERC777) returns (uint256) {
  return _totalSupply;
}

Parameters help

Name Type
tokenHolder
address help

Properties

Visibility help public
Mutability help view
Source Code
function balanceOf(address tokenHolder)
  public
  view
  override(IERC20, IERC777)
  returns (uint256)
{
  return _balances[tokenHolder];
}

send keyboard_arrow_up

Parameters help

Name Type
recipient
address help
amount
uint256 help
data
bytes help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function send(
  address recipient,
  uint256 amount,
  bytes memory data
) public override {
  _send(_msgSender(), recipient, amount, data, "", true);
}

Parameters help

Name Type
recipient
address help
amount
uint256 help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function transfer(address recipient, uint256 amount)
  public
  override
  returns (bool)
{
  require(recipient != address(0), "ERC777: transfer to the zero address");

  address from = _msgSender();

  _callTokensToSend(from, from, recipient, amount, "", "");

  _move(from, from, recipient, amount, "", "");

  _callTokensReceived(from, from, recipient, amount, "", "", false);

  return true;
}

burn keyboard_arrow_up

Parameters help

Name Type
amount
uint256 help
data
bytes help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function burn(uint256 amount, bytes memory data) public override {
  _burn(_msgSender(), amount, data, "");
}

isOperatorFor keyboard_arrow_up

Parameters help

Name Type
operator
address help
tokenHolder
address help

Properties

Visibility help public
Mutability help view
Source Code
function isOperatorFor(address operator, address tokenHolder)
  public
  view
  override
  returns (bool)
{
  return
    operator == tokenHolder ||
    (_defaultOperators[operator] &&
      !_revokedDefaultOperators[tokenHolder][operator]) ||
    _operators[tokenHolder][operator];
}

authorizeOperator keyboard_arrow_up

Parameters help

Name Type
operator
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function authorizeOperator(address operator) public override {
  require(_msgSender() != operator, "ERC777: authorizing self as operator");

  if (_defaultOperators[operator]) {
    delete _revokedDefaultOperators[_msgSender()][operator];
  } else {
    _operators[_msgSender()][operator] = true;
  }

  emit AuthorizedOperator(operator, _msgSender());
}

revokeOperator keyboard_arrow_up

Parameters help

Name Type
operator
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function revokeOperator(address operator) public override {
  require(operator != _msgSender(), "ERC777: revoking self as operator");

  if (_defaultOperators[operator]) {
    _revokedDefaultOperators[_msgSender()][operator] = true;
  } else {
    delete _operators[_msgSender()][operator];
  }

  emit RevokedOperator(operator, _msgSender());
}

defaultOperators keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function defaultOperators() public view override returns (address[] memory) {
  return _defaultOperatorsArray;
}

operatorSend keyboard_arrow_up

Parameters help

Name Type
sender
address help
recipient
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function operatorSend(
  address sender,
  address recipient,
  uint256 amount,
  bytes memory data,
  bytes memory operatorData
) public override {
  require(
    isOperatorFor(_msgSender(), sender),
    "ERC777: caller is not an operator for holder"
  );
  _send(sender, recipient, amount, data, operatorData, true);
}

operatorBurn keyboard_arrow_up

Parameters help

Name Type
account
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function operatorBurn(
  address account,
  uint256 amount,
  bytes memory data,
  bytes memory operatorData
) public override {
  require(
    isOperatorFor(_msgSender(), account),
    "ERC777: caller is not an operator for holder"
  );
  _burn(account, amount, data, operatorData);
}

Parameters help

Name Type
holder
address help
spender
address help

Properties

Visibility help public
Mutability help view
Source Code
function allowance(address holder, address spender)
  public
  view
  override
  returns (uint256)
{
  return _allowances[holder][spender];
}

Parameters help

Name Type
spender
address help
value
uint256 help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function approve(address spender, uint256 value)
  public
  override
  returns (bool)
{
  address holder = _msgSender();
  _approve(holder, spender, value);
  return true;
}

Parameters help

Name Type
holder
address help
recipient
address help
amount
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function transferFrom(
  address holder,
  address recipient,
  uint256 amount
) public override returns (bool) {
  require(recipient != address(0), "ERC777: transfer to the zero address");
  require(holder != address(0), "ERC777: transfer from the zero address");

  address spender = _msgSender();

  _callTokensToSend(spender, holder, recipient, amount, "", "");

  _move(spender, holder, recipient, amount, "", "");
  _approve(
    holder,
    spender,
    _allowances[holder][spender].sub(
      amount,
      "ERC777: transfer amount exceeds allowance"
    )
  );

  _callTokensReceived(spender, holder, recipient, amount, "", "", false);

  return true;
}

mint keyboard_arrow_up

Parameters help

Name Type
account
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help

Properties

Visibility help public
Mutability help transaction

Modifiers help

Requirements help

Source Code
function mint(
  address account,
  uint256 amount,
  bytes calldata userData,
  bytes calldata operatorData
)
  external
  allow("SkaleManager")
  returns (
    //onlyAuthorized
    bool
  )
{
  require(amount <= CAP.sub(totalSupply()), "Amount is too big");
  _mint(account, amount, userData, operatorData);

  return true;
}

getAndUpdateDelegatedAmount keyboard_arrow_up

Parameters help

Name Type
wallet
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function getAndUpdateDelegatedAmount(address wallet)
  external
  override
  returns (uint256)
{
  return
    DelegationController(contractManager.getContract("DelegationController"))
      .getAndUpdateDelegatedAmount(wallet);
}

getAndUpdateSlashedAmount keyboard_arrow_up

Parameters help

Name Type
wallet
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function getAndUpdateSlashedAmount(address wallet)
  external
  override
  returns (uint256)
{
  return
    Punisher(contractManager.getContract("Punisher")).getAndUpdateLockedAmount(
      wallet
    );
}

getAndUpdateLockedAmount keyboard_arrow_up

Parameters help

Name Type
wallet
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function getAndUpdateLockedAmount(address wallet)
  public
  override
  returns (uint256)
{
  return
    TokenState(contractManager.getContract("TokenState"))
      .getAndUpdateLockedAmount(wallet);
}

Internal Functions Expand All Collapse All

Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.

internal SkaleToken._beforeTokenTransfer keyboard_arrow_up

Parameters help

Name Type
address help
from
address help
address help
tokenId
uint256 help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _beforeTokenTransfer(
  address, // operator
  address from,
  address, // to
  uint256 tokenId
) internal override {
  uint256 locked = getAndUpdateLockedAmount(from);
  if (locked > 0) {
    require(
      balanceOf(from) >= locked.add(tokenId),
      "Token should be unlocked for transferring"
    );
  }
}

internal SkaleToken._callTokensToSend keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _callTokensToSend(
  address operator,
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData
) internal override nonReentrant {
  super._callTokensToSend(operator, from, to, amount, userData, operatorData);
}

internal SkaleToken._callTokensReceived keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help
requireReceptionAck
bool help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _callTokensReceived(
  address operator,
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData,
  bool requireReceptionAck
) internal override nonReentrant {
  super._callTokensReceived(
    operator,
    from,
    to,
    amount,
    userData,
    operatorData,
    requireReceptionAck
  );
}

internal SkaleToken._msgData keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgData()
  internal
  view
  override(Context, ContextUpgradeSafe)
  returns (bytes memory)
{
  return Context._msgData();
}

internal SkaleToken._msgSender keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgSender()
  internal
  view
  override(Context, ContextUpgradeSafe)
  returns (address payable)
{
  return Context._msgSender();
}

internal ERC777._mint keyboard_arrow_up

Parameters help

Name Type
account
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _mint(
  address account,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData
) internal virtual {
  require(account != address(0), "ERC777: mint to the zero address");

  address operator = _msgSender();

  _beforeTokenTransfer(operator, address(0), account, amount);

  // Update state variables
  _totalSupply = _totalSupply.add(amount);
  _balances[account] = _balances[account].add(amount);

  _callTokensReceived(
    operator,
    address(0),
    account,
    amount,
    userData,
    operatorData,
    true
  );

  emit Minted(operator, account, amount, userData, operatorData);
  emit Transfer(address(0), account, amount);
}

internal ERC777._send keyboard_arrow_up

Parameters help

Name Type
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help
requireReceptionAck
bool help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _send(
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData,
  bool requireReceptionAck
) internal {
  require(from != address(0), "ERC777: send from the zero address");
  require(to != address(0), "ERC777: send to the zero address");

  address operator = _msgSender();

  _callTokensToSend(operator, from, to, amount, userData, operatorData);

  _move(operator, from, to, amount, userData, operatorData);

  _callTokensReceived(
    operator,
    from,
    to,
    amount,
    userData,
    operatorData,
    requireReceptionAck
  );
}

internal ERC777._burn keyboard_arrow_up

Parameters help

Name Type
from
address help
amount
uint256 help
data
bytes help
operatorData
bytes help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _burn(
  address from,
  uint256 amount,
  bytes memory data,
  bytes memory operatorData
) internal virtual {
  require(from != address(0), "ERC777: burn from the zero address");

  address operator = _msgSender();

  /* Chaged by SKALE: we swapped these lines to prevent delegation of burning tokens */

  _callTokensToSend(operator, from, address(0), amount, data, operatorData);

  _beforeTokenTransfer(operator, from, address(0), amount);

  /* End of changed by SKALE */

  // Update state variables
  _balances[from] = _balances[from].sub(
    amount,
    "ERC777: burn amount exceeds balance"
  );
  _totalSupply = _totalSupply.sub(amount);

  emit Burned(operator, from, amount, data, operatorData);
  emit Transfer(from, address(0), amount);
}

internal ERC777._move keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help

Properties

Visibility help private
Mutability help transaction
Source Code
function _move(
  address operator,
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData
) private {
  _beforeTokenTransfer(operator, from, to, amount);

  _balances[from] = _balances[from].sub(
    amount,
    "ERC777: transfer amount exceeds balance"
  );
  _balances[to] = _balances[to].add(amount);

  emit Sent(operator, from, to, amount, userData, operatorData);
  emit Transfer(from, to, amount);
}

internal ERC777._approve keyboard_arrow_up

Parameters help

Name Type
holder
address help
spender
address help
value
uint256 help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _approve(
  address holder,
  address spender,
  uint256 value
) internal {
  require(holder != address(0), "ERC777: approve from the zero address");
  require(spender != address(0), "ERC777: approve to the zero address");

  _allowances[holder][spender] = value;
  emit Approval(holder, spender, value);
}

internal ERC777._callTokensToSend keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _callTokensToSend(
  address operator,
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData /* End of changed by SKALE */ /* End of added by SKALE */
) internal virtual /* Chaged by SKALE from private */
/* Added by SKALE */
{
  address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(
    from,
    _TOKENS_SENDER_INTERFACE_HASH
  );
  if (implementer != address(0)) {
    IERC777Sender(implementer).tokensToSend(
      operator,
      from,
      to,
      amount,
      userData,
      operatorData
    );
  }
}

internal ERC777._callTokensReceived keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
amount
uint256 help
userData
bytes help
operatorData
bytes help
requireReceptionAck
bool help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _callTokensReceived(
  address operator,
  address from,
  address to,
  uint256 amount,
  bytes memory userData,
  bytes memory operatorData,
  bool requireReceptionAck /* End of changed by SKALE */ /* End of added by SKALE */
) internal virtual /* Chaged by SKALE from private */
/* Added by SKALE */
{
  address implementer = _ERC1820_REGISTRY.getInterfaceImplementer(
    to,
    _TOKENS_RECIPIENT_INTERFACE_HASH
  );
  if (implementer != address(0)) {
    IERC777Recipient(implementer).tokensReceived(
      operator,
      from,
      to,
      amount,
      userData,
      operatorData
    );
  } else if (requireReceptionAck) {
    require(
      !to.isContract(),
      "ERC777: token recipient contract has no implementer for ERC777TokensRecipient"
    );
  }
}

internal ERC777._beforeTokenTransfer keyboard_arrow_up

Parameters help

Name Type
operator
address help
from
address help
to
address help
tokenId
uint256 help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _beforeTokenTransfer(
  address operator,
  address from,
  address to,
  uint256 tokenId
) internal virtual {}

internal Context._msgSender keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgSender() internal view virtual returns (address payable) {
  return msg.sender;
}

internal Context._msgData keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgData() internal view virtual returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}

internal Permissions._isOwner keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _isOwner() internal view returns (bool) {
  return hasRole(DEFAULT_ADMIN_ROLE, msg.sender);
}

internal Permissions._isAdmin keyboard_arrow_up

Parameters help

Name Type
account
address help

Properties

Visibility help internal
Mutability help view
Source Code
function _isAdmin(address account) internal view returns (bool) {
  address skaleManagerAddress = contractManager.contracts(
    keccak256(abi.encodePacked("SkaleManager"))
  );
  if (skaleManagerAddress != address(0)) {
    AccessControlUpgradeSafe skaleManager = AccessControlUpgradeSafe(
      skaleManagerAddress
    );
    return skaleManager.hasRole(keccak256("ADMIN_ROLE"), account) || _isOwner();
  } else {
    return _isOwner();
  }
}

internal Permissions._setContractManager keyboard_arrow_up

Parameters help

Name Type
contractManagerAddress
address help

Properties

Visibility help private
Mutability help transaction

Requirements help

Source Code
function _setContractManager(address contractManagerAddress) private {
  require(
    contractManagerAddress != address(0),
    "ContractManager address is not set"
  );
  require(contractManagerAddress.isContract(), "Address is not contract");
  contractManager = ContractManager(contractManagerAddress);
}

internal AccessControlUpgradeSafe.__AccessControl_init keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help transaction

Modifiers help

Source Code
function __AccessControl_init() internal initializer {
  __Context_init_unchained();
  __AccessControl_init_unchained();
}

internal AccessControlUpgradeSafe.__AccessControl_init_unchained keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help transaction

Modifiers help

Source Code
function __AccessControl_init_unchained() internal initializer {}

internal AccessControlUpgradeSafe._setupRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _setupRole(bytes32 role, address account) internal virtual {
  _grantRole(role, account);
}

internal AccessControlUpgradeSafe._setRoleAdmin keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
adminRole
bytes32 help

Properties

Visibility help internal
Mutability help transaction
Source Code
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
  _roles[role].adminRole = adminRole;
}

internal AccessControlUpgradeSafe._grantRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help private
Mutability help transaction
Source Code
function _grantRole(bytes32 role, address account) private {
  if (_roles[role].members.add(account)) {
    emit RoleGranted(role, account, _msgSender());
  }
}

internal AccessControlUpgradeSafe._revokeRole keyboard_arrow_up

Parameters help

Name Type
role
bytes32 help
account
address help

Properties

Visibility help private
Mutability help transaction
Source Code
function _revokeRole(bytes32 role, address account) private {
  if (_roles[role].members.remove(account)) {
    emit RoleRevoked(role, account, _msgSender());
  }
}

internal Initializable.isConstructor keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help private
Mutability help view
Source Code
function isConstructor() private view returns (bool) {
  // extcodesize checks the size of the code stored in an address, and
  // address returns the current address. Since the code is still not
  // deployed when running a constructor, any checks on its code size will
  // yield zero, making it an effective way to detect if a contract is
  // under construction or not.
  address self = address(this);
  uint256 cs;
  assembly {
    cs := extcodesize(self)
  }
  return cs == 0;
}

internal ContextUpgradeSafe.__Context_init keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help transaction

Modifiers help

Source Code
function __Context_init() internal initializer {
  __Context_init_unchained();
}

internal ContextUpgradeSafe.__Context_init_unchained keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help transaction

Modifiers help

Source Code
function __Context_init_unchained() internal initializer {}

internal ContextUpgradeSafe._msgSender keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgSender() internal view virtual returns (address payable) {
  return msg.sender;
}

internal ContextUpgradeSafe._msgData keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help view
Source Code
function _msgData() internal view virtual returns (bytes memory) {
  this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
  return msg.data;
}

internal Initializable.isConstructor keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help private
Mutability help view
Source Code
function isConstructor() private view returns (bool) {
  // extcodesize checks the size of the code stored in an address, and
  // address returns the current address. Since the code is still not
  // deployed when running a constructor, any checks on its code size will
  // yield zero, making it an effective way to detect if a contract is
  // under construction or not.
  address self = address(this);
  uint256 cs;
  assembly {
    cs := extcodesize(self)
  }
  return cs == 0;
}

internal ReentrancyGuard.constructor keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help internal
Mutability help transaction
Source Code
constructor() internal {
  _status = _NOT_ENTERED;
}