Token Bend

 

Overview [ERC-20]

Max Total Supply:
20,000,000 BEND

Holders:
1

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bend

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-12-16
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

/******************************************/
/*           IERC20 starts here           */
/******************************************/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/******************************************/
/*           Context starts here          */
/******************************************/

// File: @openzeppelin/contracts/GSN/Context.sol

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/******************************************/
/*      IERC20Metadata starts here        */
/******************************************/

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/******************************************/
/*           ERC20 starts here            */
/******************************************/

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

/******************************************/
/*           Bend starts here           */
/******************************************/

contract Bend is ERC20 {

    address public minter;

    event BendMinted(address _to, uint256 _amount);
    event LogNewMinter(address _minter);

    /**
     * @dev Throws if called by any account other than the minter.
     */
    modifier onlyMinter() {
        require(msg.sender == minter, "Caller is not the minter");
        _;
    }
    constructor(string memory name, string memory symbol, address _treasury) ERC20(name, symbol) {
        _mint(_treasury, 20*1e24);
        minter = msg.sender;
    }

    /**
     * @param newMinter The address of the new minter.
     */
    function setMinter(address newMinter) external onlyMinter {
        minter = newMinter;
        emit LogNewMinter(minter);
    }

    /**
     * @dev Mint new BEND.
     */
    function mintBend(address _to, uint256 _amount) external onlyMinter {
        _mint(_to, _amount);
        emit BendMinted(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BendMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_minter","type":"address"}],"name":"LogNewMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintBend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMinter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162000f7f38038062000f7f8339810160408190526200003491620002f9565b8251839083906200004d90600390602085019062000186565b5080516200006390600490602084019062000186565b50505062000083816a108b2a2c280290940000006200009e60201b60201c565b5050600580546001600160a01b0319163317905550620003ea565b6001600160a01b038216620000f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200010d919062000386565b90915550506001600160a01b038216600090815260208190526040812080548392906200013c90849062000386565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200019490620003ad565b90600052602060002090601f016020900481019282620001b8576000855562000203565b82601f10620001d357805160ff191683800117855562000203565b8280016001018555821562000203579182015b8281111562000203578251825591602001919060010190620001e6565b506200021192915062000215565b5090565b5b8082111562000211576000815560010162000216565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200025457600080fd5b81516001600160401b03808211156200027157620002716200022c565b604051601f8301601f19908116603f011681019082821181831017156200029c576200029c6200022c565b81604052838152602092508683858801011115620002b957600080fd5b600091505b83821015620002dd5785820183015181830184015290820190620002be565b83821115620002ef5760008385830101525b9695505050505050565b6000806000606084860312156200030f57600080fd5b83516001600160401b03808211156200032757600080fd5b620003358783880162000242565b945060208601519150808211156200034c57600080fd5b506200035b8682870162000242565b604086015190935090506001600160a01b03811681146200037b57600080fd5b809150509250925092565b60008219821115620003a857634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003c257607f821691505b60208210811415620003e457634e487b7160e01b600052602260045260246000fd5b50919050565b610b8580620003fa6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146101e8578063a9059cbb146101fb578063dd62ed3e1461020e578063fca3b5aa1461024757600080fd5b806370a08231146101a257806395d89b41146101cb57806398efdaee146101d357600080fd5b806318160ddd116100c857806318160ddd1461015b57806323b872dd1461016d578063313ce56714610180578063395093511461018f57600080fd5b806306fdde03146100ef578063075461721461010d578063095ea7b314610138575b600080fd5b6100f761025a565b60405161010491906109c2565b60405180910390f35b600554610120906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b61014b610146366004610a33565b6102ec565b6040519015158152602001610104565b6002545b604051908152602001610104565b61014b61017b366004610a5d565b610302565b60405160128152602001610104565b61014b61019d366004610a33565b6103b1565b61015f6101b0366004610a99565b6001600160a01b031660009081526020819052604090205490565b6100f76103ed565b6101e66101e1366004610a33565b6103fc565b005b61014b6101f6366004610a33565b6104a1565b61014b610209366004610a33565b61053a565b61015f61021c366004610abb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101e6610255366004610a99565b610547565b60606003805461026990610aee565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610aee565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b5050505050905090565b60006102f93384846105f0565b50600192915050565b600061030f848484610714565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103995760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103a685338584036105f0565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102f99185906103e8908690610b29565b6105f0565b60606004805461026990610aee565b6005546001600160a01b031633146104515760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329036b4b73a32b960411b6044820152606401610390565b61045b82826108e3565b604080516001600160a01b0384168152602081018390527fb9935857623da908da66650e9f06f86543b0a1632ca8ff56994c350d79ac5de4910160405180910390a15050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156105235760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610390565b61053033858584036105f0565b5060019392505050565b60006102f9338484610714565b6005546001600160a01b0316331461059c5760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329036b4b73a32b960411b6044820152606401610390565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fb47afe87c8374738d61604b305e5d2d8fc0d8c6164287b16aa2707d6454f12d99060200160405180910390a150565b6001600160a01b0383166106525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610390565b6001600160a01b0382166106b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610390565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166107785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610390565b6001600160a01b0382166107da5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610390565b6001600160a01b038316600090815260208190526040902054818110156108525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610390565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610889908490610b29565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108d591815260200190565b60405180910390a350505050565b6001600160a01b0382166109395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610390565b806002600082825461094b9190610b29565b90915550506001600160a01b03821660009081526020819052604081208054839290610978908490610b29565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156109ef578581018301518582016040015282016109d3565b81811115610a01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a2e57600080fd5b919050565b60008060408385031215610a4657600080fd5b610a4f83610a17565b946020939093013593505050565b600080600060608486031215610a7257600080fd5b610a7b84610a17565b9250610a8960208501610a17565b9150604084013590509250925092565b600060208284031215610aab57600080fd5b610ab482610a17565b9392505050565b60008060408385031215610ace57600080fd5b610ad783610a17565b9150610ae560208401610a17565b90509250929050565b600181811c90821680610b0257607f821691505b60208210811415610b2357634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610b4a57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220f37e85bb30f1c2f2ea7225ac23ed3658ca42799f20b5c6dd7bd0cf44bc10743164736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000aa20e859f4cb7d70ad4270483c2ea5a91665520a000000000000000000000000000000000000000000000000000000000000000442656e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442454e4400000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000aa20e859f4cb7d70ad4270483c2ea5a91665520a000000000000000000000000000000000000000000000000000000000000000442656e6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000442454e4400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Bend
Arg [1] : symbol (string): BEND
Arg [2] : _treasury (address): 0xAA20E859F4CB7d70ad4270483C2eA5A91665520a

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000aa20e859f4cb7d70ad4270483c2ea5a91665520a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 42656e6400000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 42454e4400000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

17126:944:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7027:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17158:21;;;;;-1:-1:-1;;;;;17158:21:0;;;;;;-1:-1:-1;;;;;780:32:1;;;762:51;;750:2;735:18;17158:21:0;616:203:1;9194:169:0;;;;;;:::i;:::-;;:::i;:::-;;;1426:14:1;;1419:22;1401:41;;1389:2;1374:18;9194:169:0;1261:187:1;8147:108:0;8235:12;;8147:108;;;1599:25:1;;;1587:2;1572:18;8147:108:0;1453:177:1;9845:492:0;;;;;;:::i;:::-;;:::i;7989:93::-;;;8072:2;2110:36:1;;2098:2;2083:18;7989:93:0;1968:184:1;10746:215:0;;;;;;:::i;:::-;;:::i;8318:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8419:18:0;8392:7;8419:18;;;;;;;;;;;;8318:127;7246:104;;;:::i;17921:146::-;;;;;;:::i;:::-;;:::i;:::-;;11464:413;;;;;;:::i;:::-;;:::i;8658:175::-;;;;;;:::i;:::-;;:::i;8896:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9012:18:0;;;8985:7;9012:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8896:151;17736:131;;;;;;:::i;:::-;;:::i;7027:100::-;7081:13;7114:5;7107:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7027:100;:::o;9194:169::-;9277:4;9294:39;3819:10;9317:7;9326:6;9294:8;:39::i;:::-;-1:-1:-1;9351:4:0;9194:169;;;;:::o;9845:492::-;9985:4;10002:36;10012:6;10020:9;10031:6;10002:9;:36::i;:::-;-1:-1:-1;;;;;10078:19:0;;10051:24;10078:19;;;:11;:19;;;;;;;;3819:10;10078:33;;;;;;;;10130:26;;;;10122:79;;;;-1:-1:-1;;;10122:79:0;;3200:2:1;10122:79:0;;;3182:21:1;3239:2;3219:18;;;3212:30;3278:34;3258:18;;;3251:62;-1:-1:-1;;;3329:18:1;;;3322:38;3377:19;;10122:79:0;;;;;;;;;10237:57;10246:6;3819:10;10287:6;10268:16;:25;10237:8;:57::i;:::-;-1:-1:-1;10325:4:0;;9845:492;-1:-1:-1;;;;9845:492:0:o;10746:215::-;3819:10;10834:4;10883:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10883:34:0;;;;;;;;;;10834:4;;10851:80;;10874:7;;10883:47;;10920:10;;10883:47;:::i;:::-;10851:8;:80::i;7246:104::-;7302:13;7335:7;7328:14;;;;;:::i;17921:146::-;17426:6;;-1:-1:-1;;;;;17426:6:0;17412:10;:20;17404:57;;;;-1:-1:-1;;;17404:57:0;;3839:2:1;17404:57:0;;;3821:21:1;3878:2;3858:18;;;3851:30;-1:-1:-1;;;3897:18:1;;;3890:54;3961:18;;17404:57:0;3637:348:1;17404:57:0;18000:19:::1;18006:3;18011:7;18000:5;:19::i;:::-;18035:24;::::0;;-1:-1:-1;;;;;4182:32:1;;4164:51;;4246:2;4231:18;;4224:34;;;18035:24:0::1;::::0;4137:18:1;18035:24:0::1;;;;;;;17921:146:::0;;:::o;11464:413::-;3819:10;11557:4;11601:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11601:34:0;;;;;;;;;;11654:35;;;;11646:85;;;;-1:-1:-1;;;11646:85:0;;4471:2:1;11646:85:0;;;4453:21:1;4510:2;4490:18;;;4483:30;4549:34;4529:18;;;4522:62;-1:-1:-1;;;4600:18:1;;;4593:35;4645:19;;11646:85:0;4269:401:1;11646:85:0;11767:67;3819:10;11790:7;11818:15;11799:16;:34;11767:8;:67::i;:::-;-1:-1:-1;11865:4:0;;11464:413;-1:-1:-1;;;11464:413:0:o;8658:175::-;8744:4;8761:42;3819:10;8785:9;8796:6;8761:9;:42::i;17736:131::-;17426:6;;-1:-1:-1;;;;;17426:6:0;17412:10;:20;17404:57;;;;-1:-1:-1;;;17404:57:0;;3839:2:1;17404:57:0;;;3821:21:1;3878:2;3858:18;;;3851:30;-1:-1:-1;;;3897:18:1;;;3890:54;3961:18;;17404:57:0;3637:348:1;17404:57:0;17805:6:::1;:18:::0;;-1:-1:-1;;;;;;17805:18:0::1;-1:-1:-1::0;;;;;17805:18:0;::::1;::::0;;::::1;::::0;;;17839:20:::1;::::0;762:51:1;;;17839:20:0::1;::::0;750:2:1;735:18;17839:20:0::1;;;;;;;17736:131:::0;:::o;15148:380::-;-1:-1:-1;;;;;15284:19:0;;15276:68;;;;-1:-1:-1;;;15276:68:0;;4877:2:1;15276:68:0;;;4859:21:1;4916:2;4896:18;;;4889:30;4955:34;4935:18;;;4928:62;-1:-1:-1;;;5006:18:1;;;4999:34;5050:19;;15276:68:0;4675:400:1;15276:68:0;-1:-1:-1;;;;;15363:21:0;;15355:68;;;;-1:-1:-1;;;15355:68:0;;5282:2:1;15355:68:0;;;5264:21:1;5321:2;5301:18;;;5294:30;5360:34;5340:18;;;5333:62;-1:-1:-1;;;5411:18:1;;;5404:32;5453:19;;15355:68:0;5080:398:1;15355:68:0;-1:-1:-1;;;;;15436:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15488:32;;1599:25:1;;;15488:32:0;;1572:18:1;15488:32:0;;;;;;;15148:380;;;:::o;12367:733::-;-1:-1:-1;;;;;12507:20:0;;12499:70;;;;-1:-1:-1;;;12499:70:0;;5685:2:1;12499:70:0;;;5667:21:1;5724:2;5704:18;;;5697:30;5763:34;5743:18;;;5736:62;-1:-1:-1;;;5814:18:1;;;5807:35;5859:19;;12499:70:0;5483:401:1;12499:70:0;-1:-1:-1;;;;;12588:23:0;;12580:71;;;;-1:-1:-1;;;12580:71:0;;6091:2:1;12580:71:0;;;6073:21:1;6130:2;6110:18;;;6103:30;6169:34;6149:18;;;6142:62;-1:-1:-1;;;6220:18:1;;;6213:33;6263:19;;12580:71:0;5889:399:1;12580:71:0;-1:-1:-1;;;;;12748:17:0;;12724:21;12748:17;;;;;;;;;;;12784:23;;;;12776:74;;;;-1:-1:-1;;;12776:74:0;;6495:2:1;12776:74:0;;;6477:21:1;6534:2;6514:18;;;6507:30;6573:34;6553:18;;;6546:62;-1:-1:-1;;;6624:18:1;;;6617:36;6670:19;;12776:74:0;6293:402:1;12776:74:0;-1:-1:-1;;;;;12886:17:0;;;:9;:17;;;;;;;;;;;12906:22;;;12886:42;;12950:20;;;;;;;;:30;;12922:6;;12886:9;12950:30;;12922:6;;12950:30;:::i;:::-;;;;;;;;13015:9;-1:-1:-1;;;;;12998:35:0;13007:6;-1:-1:-1;;;;;12998:35:0;;13026:6;12998:35;;;;1599:25:1;;1587:2;1572:18;;1453:177;12998:35:0;;;;;;;;12488:612;12367:733;;;:::o;13387:399::-;-1:-1:-1;;;;;13471:21:0;;13463:65;;;;-1:-1:-1;;;13463:65:0;;6902:2:1;13463:65:0;;;6884:21:1;6941:2;6921:18;;;6914:30;6980:33;6960:18;;;6953:61;7031:18;;13463:65:0;6700:355:1;13463:65:0;13619:6;13603:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13636:18:0;;:9;:18;;;;;;;;;;:28;;13658:6;;13636:9;:28;;13658:6;;13636:28;:::i;:::-;;;;-1:-1:-1;;13680:37:0;;1599:25:1;;;-1:-1:-1;;;;;13680:37:0;;;13697:1;;13680:37;;1587:2:1;1572:18;13680:37:0;;;;;;;13387:399;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;824:173::-;892:20;;-1:-1:-1;;;;;941:31:1;;931:42;;921:70;;987:1;984;977:12;921:70;824:173;;;:::o;1002:254::-;1070:6;1078;1131:2;1119:9;1110:7;1106:23;1102:32;1099:52;;;1147:1;1144;1137:12;1099:52;1170:29;1189:9;1170:29;:::i;:::-;1160:39;1246:2;1231:18;;;;1218:32;;-1:-1:-1;;;1002:254:1:o;1635:328::-;1712:6;1720;1728;1781:2;1769:9;1760:7;1756:23;1752:32;1749:52;;;1797:1;1794;1787:12;1749:52;1820:29;1839:9;1820:29;:::i;:::-;1810:39;;1868:38;1902:2;1891:9;1887:18;1868:38;:::i;:::-;1858:48;;1953:2;1942:9;1938:18;1925:32;1915:42;;1635:328;;;;;:::o;2157:186::-;2216:6;2269:2;2257:9;2248:7;2244:23;2240:32;2237:52;;;2285:1;2282;2275:12;2237:52;2308:29;2327:9;2308:29;:::i;:::-;2298:39;2157:186;-1:-1:-1;;;2157:186:1:o;2348:260::-;2416:6;2424;2477:2;2465:9;2456:7;2452:23;2448:32;2445:52;;;2493:1;2490;2483:12;2445:52;2516:29;2535:9;2516:29;:::i;:::-;2506:39;;2564:38;2598:2;2587:9;2583:18;2564:38;:::i;:::-;2554:48;;2348:260;;;;;:::o;2613:380::-;2692:1;2688:12;;;;2735;;;2756:61;;2810:4;2802:6;2798:17;2788:27;;2756:61;2863:2;2855:6;2852:14;2832:18;2829:38;2826:161;;;2909:10;2904:3;2900:20;2897:1;2890:31;2944:4;2941:1;2934:15;2972:4;2969:1;2962:15;2826:161;;2613:380;;;:::o;3407:225::-;3447:3;3478:1;3474:6;3471:1;3468:13;3465:136;;;3523:10;3518:3;3514:20;3511:1;3504:31;3558:4;3555:1;3548:15;3586:4;3583:1;3576:15;3465:136;-1:-1:-1;3617:9:1;;3407:225::o

Swarm Source

ipfs://f37e85bb30f1c2f2ea7225ac23ed3658ca42799f20b5c6dd7bd0cf44bc107431

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.