Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- bondprot1
- Optimization enabled
- true
- Compiler version
- v0.8.6+commit.11564f7e
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-01-15T17:16:39.878065Z
Constructor Arguments
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b426f6e646564546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024254000000000000000000000000000000000000000000000000000000000000
Arg [0] (string) : BondedToken
Arg [1] (string) : BT
Contract source code
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } 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; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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); } 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 defaut 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"); _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"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is 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"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(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: * * - `to` 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); } /** * @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"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(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 to 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 { } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract bondprot1 is ERC20, Ownable { using Address for address; address public treasurey = address(this); address public ewd = 0x16e13C4cCcC031a0D7BAa34bcB39Aaf65b3C1891; address public cc1 = 0x62250F0B6a9923a19412469ad09F37A2aA367eda; address public cc2 = 0x0000000000000000000000000000000000000000; address public cc3 = 0x0000000000000000000000000000000000000000; address public cc4 = 0x0000000000000000000000000000000000000000; address public cc5 = 0x0000000000000000000000000000000000000000; uint256 public ewd1price = 1000; uint256 public ewd2price = 0; uint256 public ewd3price = 0; uint256 public ewd4price = 0; uint256 public ewd5price = 0; constructor( string memory _name, string memory _symbol ) ERC20(_name, _symbol) { } // // Carbon credit #1 // function bondcc1(uint256 _amount) public { uint256 amount = _amount * 10**18; uint256 ewdcost = amount * ewd1price; IERC20(ewd).transferFrom(msg.sender, treasurey, ewdcost); IERC20(cc1).transferFrom(msg.sender, treasurey, amount); _mint(msg.sender, amount); } function unbondcc1(uint256 _amount) public { uint256 amount = _amount * 10**18; _burn(msg.sender, amount); IERC20(cc1).approve(treasurey, amount); IERC20(cc1).transferFrom(treasurey, msg.sender, amount); } // // Carbon credit #2 // function bondcc2(uint256 _amount) public { uint256 amount = _amount * 10**18; uint256 ewdcost = amount * ewd1price; IERC20(ewd).transferFrom(msg.sender, treasurey, ewdcost); IERC20(cc2).transferFrom(msg.sender, treasurey, amount); _mint(msg.sender, amount); } function unbondcc2(uint256 _amount) public { uint256 amount = _amount * 10**18; _burn(msg.sender, amount); IERC20(cc2).approve(treasurey, amount); IERC20(cc2).transferFrom(treasurey, msg.sender, amount); } // // Carbon credit #3 // function bondcc3(uint256 _amount) public { uint256 amount = _amount * 10**18; uint256 ewdcost = amount * ewd1price; IERC20(ewd).transferFrom(msg.sender, treasurey, ewdcost); IERC20(cc3).transferFrom(msg.sender, treasurey, amount); _mint(msg.sender, amount); } function unbondcc3(uint256 _amount) public { uint256 amount = _amount * 10**18; _burn(msg.sender, amount); IERC20(cc3).approve(treasurey, amount); IERC20(cc3).transferFrom(treasurey, msg.sender, amount); } // // Carbon credit #4 // function bondcc4(uint256 _amount) public { uint256 amount = _amount * 10**18; uint256 ewdcost = amount * ewd1price; IERC20(ewd).transferFrom(msg.sender, treasurey, ewdcost); IERC20(cc4).transferFrom(msg.sender, treasurey, amount); _mint(msg.sender, amount); } function unbondcc4(uint256 _amount) public { uint256 amount = _amount * 10**18; _burn(msg.sender, amount); IERC20(cc4).approve(treasurey, amount); IERC20(cc4).transferFrom(treasurey, msg.sender, amount); } // // Carbon credit #5 // function bondcc5(uint256 _amount) public { uint256 amount = _amount * 10**18; uint256 ewdcost = amount * ewd1price; IERC20(ewd).transferFrom(msg.sender, treasurey, ewdcost); IERC20(cc5).transferFrom(msg.sender, treasurey, amount); _mint(msg.sender, amount); } function unbondcc5(uint256 _amount) public { uint256 amount = _amount * 10**18; _burn(msg.sender, amount); IERC20(cc5).approve(treasurey, amount); IERC20(cc5).transferFrom(treasurey, msg.sender, amount); } // // Set the carbon credit contract addresses // function setcc1(address _setcc1) public onlyOwner() { cc1 = _setcc1; } function setcc2(address _setcc2) public onlyOwner() { cc2 = _setcc2; } function setcc3(address _setcc3) public onlyOwner() { cc3 = _setcc3; } function setcc4(address _setcc4) public onlyOwner() { cc4 = _setcc4; } function setcc5(address _setcc5) public onlyOwner() { cc5 = _setcc5; } // // Set the EWD fee for bond // function setEwd1Price(uint256 _setEwd1Price) public onlyOwner() { ewd1price = _setEwd1Price; } function setEwd2Price(uint256 _setEwd2Price) public onlyOwner() { ewd2price = _setEwd2Price; } function setEwd3Price(uint256 _setEwd3Price) public onlyOwner() { ewd3price = _setEwd3Price; } function setEwd4Price(uint256 _setEwd4Price) public onlyOwner() { ewd4price = _setEwd4Price; } function setEwd5Price(uint256 _setEwd5Price) public onlyOwner() { ewd5price = _setEwd5Price; } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bondcc1","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bondcc2","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bondcc3","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bondcc4","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bondcc5","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cc1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cc2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cc3","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cc4","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cc5","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ewd","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ewd1price","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ewd2price","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ewd3price","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ewd4price","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ewd5price","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEwd1Price","inputs":[{"type":"uint256","name":"_setEwd1Price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEwd2Price","inputs":[{"type":"uint256","name":"_setEwd2Price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEwd3Price","inputs":[{"type":"uint256","name":"_setEwd3Price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEwd4Price","inputs":[{"type":"uint256","name":"_setEwd4Price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setEwd5Price","inputs":[{"type":"uint256","name":"_setEwd5Price","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setcc1","inputs":[{"type":"address","name":"_setcc1","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setcc2","inputs":[{"type":"address","name":"_setcc2","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setcc3","inputs":[{"type":"address","name":"_setcc3","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setcc4","inputs":[{"type":"address","name":"_setcc4","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setcc5","inputs":[{"type":"address","name":"_setcc5","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"treasurey","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unbondcc1","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unbondcc2","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unbondcc3","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unbondcc4","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unbondcc5","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]}]
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061028a5760003560e01c806386dc07d41161015c578063b794b434116100ce578063cd585fbf11610087578063cd585fbf1461058d578063dd62ed3e14610596578063e61b9a4a146105cf578063ef590dbf146105e2578063f190d239146105f5578063f2fde38b1461060857600080fd5b8063b794b4341461051b578063bc5cf2c61461052e578063c51aca9b14610541578063c51d0c0114610554578063cc50a76814610567578063cc5fd6cb1461057a57600080fd5b806396c6aede1161012057806396c6aede146104a95780639f9bf4e2146104bc578063a02cdcbe146104cf578063a457c2d7146104e2578063a88e1f0f146104f5578063a9059cbb1461050857600080fd5b806386dc07d41461043f5780638c3ca0fa1461046a5780638cf5df591461047d5780638da5cb5b1461049057806395d89b41146104a157600080fd5b806347bf8f561161020057806370a08231116101b957806370a08231146103d6578063715018a6146103ff57806376f7c6b7146104075780637c80f4fc1461041a5780637f85105d1461042d578063867600271461043657600080fd5b806347bf8f561461036e57806351cd2e00146103815780635b112b78146103945780635f52ed54146103a7578063695c43b8146103b05780636a14311c146103c357600080fd5b80632c0e3b8c116102525780632c0e3b8c1461030a578063313ce5671461031357806337a9f7411461032257806339509351146103355780633d3a7c2d1461034857806341f85f941461035b57600080fd5b806306fdde031461028f578063095ea7b3146102ad57806318160ddd146102d05780631955d72f146102e257806323b872dd146102f7575b600080fd5b61029761061b565b6040516102a49190611c4c565b60405180910390f35b6102c06102bb366004611bc3565b6106ad565b60405190151581526020016102a4565b6002545b6040519081526020016102a4565b6102f56102f0366004611c0f565b6106c3565b005b6102c0610305366004611b87565b6106fb565b6102d460105481565b604051601281526020016102a4565b6102f5610330366004611c0f565b6107ac565b6102c0610343366004611bc3565b6107db565b6102f5610356366004611b32565b610812565b6102f5610369366004611c0f565b61085e565b6102f561037c366004611c0f565b610996565b6102f561038f366004611c0f565b6109c5565b6102f56103a2366004611c0f565b610aa6565b6102d4600e5481565b6102f56103be366004611c0f565b610bf0565b6102f56103d1366004611b32565b610cdd565b6102d46103e4366004611b32565b6001600160a01b031660009081526020819052604090205490565b6102f5610d29565b6102f5610415366004611b32565b610d9d565b6102f5610428366004611c0f565b610de9565b6102d4600f5481565b6102d4600d5481565b600654610452906001600160a01b031681565b6040516001600160a01b0390911681526020016102a4565b6102f5610478366004611b32565b610ed6565b600a54610452906001600160a01b031681565b6005546001600160a01b0316610452565b610297610f22565b6102f56104b7366004611b32565b610f31565b6102f56104ca366004611c0f565b610f7d565b600754610452906001600160a01b031681565b6102c06104f0366004611bc3565b610fac565b6102f5610503366004611c0f565b611047565b6102c0610516366004611bc3565b611128565b600c54610452906001600160a01b031681565b6102f561053c366004611c0f565b611135565b600b54610452906001600160a01b031681565b6102f5610562366004611c0f565b611222565b6102f5610575366004611c0f565b611251565b600954610452906001600160a01b031681565b6102d460115481565b6102d46105a4366004611b54565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600854610452906001600160a01b031681565b6102f56105f0366004611c0f565b61133e565b6102f5610603366004611c0f565b61141f565b6102f5610616366004611b32565b611500565b60606003805461062a90611d24565b80601f016020809104026020016040519081016040528092919081815260200182805461065690611d24565b80156106a35780601f10610678576101008083540402835291602001916106a3565b820191906000526020600020905b81548152906001019060200180831161068657829003601f168201915b5050505050905090565b60006106ba3384846115eb565b50600192915050565b6005546001600160a01b031633146106f65760405162461bcd60e51b81526004016106ed90611ca1565b60405180910390fd5b601055565b6000610708848484611710565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561078d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ed565b6107a1853361079c8685611d0d565b6115eb565b506001949350505050565b6005546001600160a01b031633146107d65760405162461bcd60e51b81526004016106ed90611ca1565b600d55565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106ba91859061079c908690611cd6565b6005546001600160a01b0316331461083c5760405162461bcd60e51b81526004016106ed90611ca1565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061087282670de0b6b3a7640000611cee565b905061087e33826118e8565b600c5460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109069190611bed565b50600c546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261093f9291169033908690600401611c28565b602060405180830381600087803b15801561095957600080fd5b505af115801561096d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109919190611bed565b505050565b6005546001600160a01b031633146109c05760405162461bcd60e51b81526004016106ed90611ca1565b601155565b60006109d982670de0b6b3a7640000611cee565b90506109e533826118e8565b60085460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b158015610a3557600080fd5b505af1158015610a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6d9190611bed565b506008546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261093f9291169033908690600401611c28565b6000610aba82670de0b6b3a7640000611cee565b90506000600d5482610acc9190611cee565b6007546006546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd92610b079233929116908690600401611c28565b602060405180830381600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190611bed565b506009546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610b93923392909116908790600401611c28565b602060405180830381600087803b158015610bad57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be59190611bed565b506109913383611a37565b6000610c0482670de0b6b3a7640000611cee565b90506000600d5482610c169190611cee565b6007546006546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd92610c519233929116908690600401611c28565b602060405180830381600087803b158015610c6b57600080fd5b505af1158015610c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca39190611bed565b50600b546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610b93923392909116908790600401611c28565b6005546001600160a01b03163314610d075760405162461bcd60e51b81526004016106ed90611ca1565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d535760405162461bcd60e51b81526004016106ed90611ca1565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dc75760405162461bcd60e51b81526004016106ed90611ca1565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000610dfd82670de0b6b3a7640000611cee565b90506000600d5482610e0f9190611cee565b6007546006546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd92610e4a9233929116908690600401611c28565b602060405180830381600087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9c9190611bed565b50600c546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610b93923392909116908790600401611c28565b6005546001600160a01b03163314610f005760405162461bcd60e51b81526004016106ed90611ca1565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60606004805461062a90611d24565b6005546001600160a01b03163314610f5b5760405162461bcd60e51b81526004016106ed90611ca1565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610fa75760405162461bcd60e51b81526004016106ed90611ca1565b600f55565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561102e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ed565b61103d338561079c8685611d0d565b5060019392505050565b600061105b82670de0b6b3a7640000611cee565b905061106733826118e8565b600a5460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b1580156110b757600080fd5b505af11580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef9190611bed565b50600a546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261093f9291169033908690600401611c28565b60006106ba338484611710565b600061114982670de0b6b3a7640000611cee565b90506000600d548261115b9190611cee565b6007546006546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd926111969233929116908690600401611c28565b602060405180830381600087803b1580156111b057600080fd5b505af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190611bed565b50600a546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610b93923392909116908790600401611c28565b6005546001600160a01b0316331461124c5760405162461bcd60e51b81526004016106ed90611ca1565b600e55565b600061126582670de0b6b3a7640000611cee565b90506000600d54826112779190611cee565b6007546006546040516323b872dd60e01b81529293506001600160a01b03918216926323b872dd926112b29233929116908690600401611c28565b602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190611bed565b506008546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd92610b93923392909116908790600401611c28565b600061135282670de0b6b3a7640000611cee565b905061135e33826118e8565b600b5460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e69190611bed565b50600b546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261093f9291169033908690600401611c28565b600061143382670de0b6b3a7640000611cee565b905061143f33826118e8565b60095460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b15801561148f57600080fd5b505af11580156114a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c79190611bed565b506009546006546040516323b872dd60e01b81526001600160a01b03928316926323b872dd9261093f9291169033908690600401611c28565b6005546001600160a01b0316331461152a5760405162461bcd60e51b81526004016106ed90611ca1565b6001600160a01b03811661158f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ed565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661164d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ed565b6001600160a01b0382166116ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ed565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106ed565b6001600160a01b0382166117d65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106ed565b6001600160a01b0383166000908152602081905260409020548181101561184e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ed565b6118588282611d0d565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061188e908490611cd6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118da91815260200190565b60405180910390a350505050565b6001600160a01b0382166119485760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106ed565b6001600160a01b038216600090815260208190526040902054818110156119bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016106ed565b6119c68282611d0d565b6001600160a01b038416600090815260208190526040812091909155600280548492906119f4908490611d0d565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611703565b6001600160a01b038216611a8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ed565b8060026000828254611a9f9190611cd6565b90915550506001600160a01b03821660009081526020819052604081208054839290611acc908490611cd6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80356001600160a01b0381168114611b2d57600080fd5b919050565b600060208284031215611b4457600080fd5b611b4d82611b16565b9392505050565b60008060408385031215611b6757600080fd5b611b7083611b16565b9150611b7e60208401611b16565b90509250929050565b600080600060608486031215611b9c57600080fd5b611ba584611b16565b9250611bb360208501611b16565b9150604084013590509250925092565b60008060408385031215611bd657600080fd5b611bdf83611b16565b946020939093013593505050565b600060208284031215611bff57600080fd5b81518015158114611b4d57600080fd5b600060208284031215611c2157600080fd5b5035919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208083528351808285015260005b81811015611c7957858101830151858201604001528201611c5d565b81811115611c8b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611ce957611ce9611d5f565b500190565b6000816000190483118215151615611d0857611d08611d5f565b500290565b600082821015611d1f57611d1f611d5f565b500390565b600181811c90821680611d3857607f821691505b60208210811415611d5957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220652251a9a479476329b993e23485469d10c3a15a4691f9dc1c749792eeb8c68f64736f6c63430008060033