Contract Overview
Latest 2 from a total of 2 transactions
Txn Hash |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|
fcdb1c2fc2adf92676cb89ac4198dba9697799fb4b5b6a114b75795a084430d1 | 23548389 | 5 months ago | io1vwndnglh0cunruethmzcpyqeupzlm43qvjcj4z | IN | Contract: AnyswapV6ERC20 | 0 IOTX | 0.080136 | |
1c9402005e7def82aed502baca10ec53dc00d0856b35478d39d36b8b92c31237 | 23548386 | 5 months ago | io1vwndnglh0cunruethmzcpyqeupzlm43qvjcj4z | IN | Contract: AnyswapV6ERC20 | 0 IOTX | 0.060559 |
Contract Name:
AnyswapV6ERC20
Compiler Version
v0.8.10+commit.fc410830
/** *Submitted for verification at Etherscan.io on 2023-08-24 */ /** *Submitted for verification at Etherscan.io on 2023-08-15 */ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.2; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); 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); } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract AnyswapV6ERC20 is IERC20 { using SafeERC20 for IERC20; string public name; string public symbol; uint8 public immutable override decimals; address public immutable underlying; bool public constant underlyingIsMinted = false; /// @dev Records amount of AnyswapV6ERC20 token owned by account. mapping (address => uint256) public override balanceOf; uint256 private _totalSupply; // init flag for setting immediate vault, needed for CREATE2 support bool private _init; // flag to enable/disable swapout vs vault.burn so multiple events are triggered bool private _vaultOnly; // delay for timelock functions uint public constant DELAY = 0 days; // set of minters, can be this bridge or other bridges mapping(address => bool) public isMinter; address[] public minters; // primary controller of the token contract address public vault; address public pendingMinter; uint public delayMinter; address public pendingVault; uint public delayVault; modifier onlyAuth() { require(isMinter[msg.sender], "AnyswapV6ERC20: FORBIDDEN"); _; } modifier onlyVault() { require(msg.sender == vault, "AnyswapV6ERC20: FORBIDDEN"); _; } function owner() external view returns (address) { return vault; } function mpc() external view returns (address) { return vault; } function setVaultOnly(bool enabled) external onlyVault { _vaultOnly = enabled; } function initVault(address _vault) external onlyVault { require(_init); _init = false; vault = _vault; isMinter[_vault] = true; minters.push(_vault); } function setVault(address _vault) external onlyVault { require(_vault != address(0), "AnyswapV6ERC20: address(0)"); pendingVault = _vault; delayVault = block.timestamp + DELAY; } function applyVault() external onlyVault { require(pendingVault != address(0) && block.timestamp >= delayVault); vault = pendingVault; pendingVault = address(0); delayVault = 0; } function setMinter(address _auth) external onlyVault { require(_auth != address(0), "AnyswapV6ERC20: address(0)"); pendingMinter = _auth; delayMinter = block.timestamp + DELAY; } function applyMinter() external onlyVault { require(pendingMinter != address(0) && block.timestamp >= delayMinter); isMinter[pendingMinter] = true; minters.push(pendingMinter); pendingMinter = address(0); delayMinter = 0; } // No time delay revoke minter emergency function function revokeMinter(address _auth) external onlyVault { isMinter[_auth] = false; } function getAllMinters() external view returns (address[] memory) { return minters; } function changeVault(address newVault) external onlyVault returns (bool) { require(newVault != address(0), "AnyswapV6ERC20: address(0)"); emit LogChangeVault(vault, newVault, block.timestamp); vault = newVault; pendingVault = address(0); delayVault = 0; return true; } function mint(address to, uint256 amount) external onlyAuth returns (bool) { _mint(to, amount); return true; } function burn(address from, uint256 amount) external onlyAuth returns (bool) { _burn(from, amount); return true; } function Swapin(bytes32 txhash, address account, uint256 amount) external onlyAuth returns (bool) { if (underlying != address(0) && IERC20(underlying).balanceOf(address(this)) >= amount) { IERC20(underlying).safeTransfer(account, amount); } else { _mint(account, amount); } emit LogSwapin(txhash, account, amount); return true; } function Swapout(uint256 amount, address bindaddr) external returns (bool) { require(!_vaultOnly, "AnyswapV6ERC20: vaultOnly"); require(bindaddr != address(0), "AnyswapV6ERC20: address(0)"); if (underlying != address(0) && balanceOf[msg.sender] < amount) { IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount); } else { _burn(msg.sender, amount); } emit LogSwapout(msg.sender, bindaddr, amount); return true; } /// @dev Records number of AnyswapV6ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}. mapping (address => mapping (address => uint256)) public override allowance; event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime); event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount); event LogSwapout(address indexed account, address indexed bindaddr, uint amount); constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) { name = _name; symbol = _symbol; decimals = _decimals; underlying = _underlying; if (_underlying != address(0)) { require(_decimals == IERC20(_underlying).decimals()); } // Use init to allow for CREATE2 accross all chains _init = true; // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens _vaultOnly = false; vault = _vault; } /// @dev Returns the total supply of AnyswapV6ERC20 token as the ETH held in this contract. function totalSupply() external view override returns (uint256) { return _totalSupply; } function deposit() external returns (uint) { uint _amount = IERC20(underlying).balanceOf(msg.sender); IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount); return _deposit(_amount, msg.sender); } function deposit(uint amount) external returns (uint) { IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount); return _deposit(amount, msg.sender); } function deposit(uint amount, address to) external returns (uint) { IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount); return _deposit(amount, to); } function depositVault(uint amount, address to) external onlyVault returns (uint) { return _deposit(amount, to); } function _deposit(uint amount, address to) internal returns (uint) { require(!underlyingIsMinted); require(underlying != address(0) && underlying != address(this)); _mint(to, amount); return amount; } function withdraw() external returns (uint) { return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender); } function withdraw(uint amount) external returns (uint) { return _withdraw(msg.sender, amount, msg.sender); } function withdraw(uint amount, address to) external returns (uint) { return _withdraw(msg.sender, amount, to); } function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) { return _withdraw(from, amount, to); } function _withdraw(address from, uint amount, address to) internal returns (uint) { require(!underlyingIsMinted); require(underlying != address(0) && underlying != address(this)); _burn(from, amount); IERC20(underlying).safeTransfer(to, amount); return 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 { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; balanceOf[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 { require(account != address(0), "ERC20: burn from the zero address"); uint256 balance = balanceOf[account]; require(balance >= amount, "ERC20: burn amount exceeds balance"); balanceOf[account] = balance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV6ERC20 token. /// Emits {Approval} event. /// Returns boolean value indicating whether operation succeeded. function approve(address spender, uint256 value) external override returns (bool) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /// @dev Moves `value` AnyswapV6ERC20 token from caller's account to account (`to`). /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - caller account must have at least `value` AnyswapV6ERC20 token. function transfer(address to, uint256 value) external override returns (bool) { require(to != address(0) && to != address(this)); uint256 balance = balanceOf[msg.sender]; require(balance >= value, "AnyswapV6ERC20: transfer amount exceeds balance"); balanceOf[msg.sender] = balance - value; balanceOf[to] += value; emit Transfer(msg.sender, to, value); return true; } /// @dev Moves `value` AnyswapV6ERC20 token from account (`from`) to account (`to`) using allowance mechanism. /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`. /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`), /// unless allowance is set to `type(uint256).max` /// Emits {Transfer} event. /// Returns boolean value indicating whether operation succeeded. /// Requirements: /// - `from` account must have at least `value` balance of AnyswapV6ERC20 token. /// - `from` account must have approved caller to spend at least `value` of AnyswapV6ERC20 token, unless `from` and caller are the same account. function transferFrom(address from, address to, uint256 value) external override returns (bool) { require(to != address(0) && to != address(this)); if (from != msg.sender) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "AnyswapV6ERC20: request exceeds allowance"); uint256 reduced = allowed - value; allowance[from][msg.sender] = reduced; emit Approval(from, msg.sender, reduced); } } uint256 balance = balanceOf[from]; require(balance >= value, "AnyswapV6ERC20: transfer amount exceeds balance"); balanceOf[from] = balance - value; balanceOf[to] += value; emit Transfer(from, to, value); return true; } }
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","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":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","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":[],"name":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingIsMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506004361061025c5760003560e01c806387689e2811610146578063c3081240116100c3578063d93f244511610087578063d93f244514610542578063dd62ed3e1461054a578063ec126c7714610575578063f75c266414610453578063fbfa77cf14610588578063fca3b5aa1461059b57600080fd5b8063c308124014610503578063c4b740f51461050c578063cfbd48851461051f578063d0e30db014610532578063d6c797511461053a57600080fd5b8063a045442c1161010a578063a045442c14610492578063a9059cbb146104a7578063aa271e1a146104ba578063b6b55f25146104dd578063bebbf4d0146104f057600080fd5b806387689e281461044a5780638da5cb5b1461045357806391c5df491461046457806395d89b41146104775780639dc29fac1461047f57600080fd5b80633ccfd60b116101df5780636817031b116101a35780636817031b146103c257806369b41170146103d55780636e553f65146103dd5780636f307dc3146103f057806370a08231146104175780638623ec7b1461043757600080fd5b80633ccfd60b1461035657806340c10f191461035e57806352113ba71461037157806360e232a91461039c578063628d6cba146103af57600080fd5b806318160ddd1161022657806318160ddd146102dc57806323b872dd146102e45780632e1a7d4d146102f75780632ebe3fbb1461030a578063313ce5671461031d57600080fd5b806239d6ec14610261578062f714ce1461028757806306fdde031461029a578063095ea7b3146102af5780630d707df8146102d2575b600080fd5b61027461026f366004611971565b6105ae565b6040519081526020015b60405180910390f35b6102746102953660046119ad565b6105f7565b6102a261060b565b60405161027e9190611a05565b6102c26102bd366004611a38565b610699565b604051901515815260200161027e565b6102da610705565b005b600354610274565b6102c26102f2366004611a62565b6107d4565b610274610305366004611a9e565b6109d2565b6102da610318366004611ab7565b6109e5565b6103447f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161027e565b610274610a9f565b6102c261036c366004611a38565b610ac0565b600a54610384906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b6102c26103aa366004611ab7565b610b02565b6102c26103bd3660046119ad565b610bc7565b6102da6103d0366004611ab7565b610d14565b610274600081565b6102746103eb3660046119ad565b610d90565b6103847f000000000000000000000000000000000000000000000000000000000000000081565b610274610425366004611ab7565b60026020526000908152604090205481565b610384610445366004611a9e565b610dd1565b610274600b5481565b6007546001600160a01b0316610384565b600854610384906001600160a01b031681565b6102a2610dfb565b6102c261048d366004611a38565b610e08565b61049a610e41565b60405161027e9190611ad2565b6102c26104b5366004611a38565b610ea3565b6102c26104c8366004611ab7565b60056020526000908152604090205460ff1681565b6102746104eb366004611a9e565b610f7a565b6102746104fe3660046119ad565b610fbb565b61027460095481565b6102da61051a366004611b30565b610fe8565b6102da61052d366004611ab7565b61102c565b610274611077565b6102c2600081565b6102da61114b565b610274610558366004611b4d565b600c60209081526000928352604080842090915290825290205481565b6102c2610583366004611b77565b6111c6565b600754610384906001600160a01b031681565b6102da6105a9366004611ab7565b611339565b6007546000906001600160a01b031633146105e45760405162461bcd60e51b81526004016105db90611b9c565b60405180910390fd5b6105ef8484846113b5565b949350505050565b60006106043384846113b5565b9392505050565b6000805461061890611bd3565b80601f016020809104026020016040519081016040528092919081815260200182805461064490611bd3565b80156106915780601f1061066657610100808354040283529160200191610691565b820191906000526020600020905b81548152906001019060200180831161067457829003601f168201915b505050505081565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f49086815260200190565b60405180910390a350600192915050565b6007546001600160a01b0316331461072f5760405162461bcd60e51b81526004016105db90611b9c565b6008546001600160a01b03161580159061074b57506009544210155b61075457600080fd5b600880546001600160a01b0390811660009081526005602052604081208054600160ff199091168117909155835460068054928301815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054919093166001600160a01b0319918216179092558254909116909155600955565b60006001600160a01b038316158015906107f757506001600160a01b0383163014155b61080057600080fd5b6001600160a01b038416331461090c576001600160a01b0384166000908152600c60209081526040808320338452909152902054600019811461090a578281101561089f5760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563645524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105db565b60006108ab8483611c24565b6001600160a01b0387166000818152600c6020908152604080832033808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156109455760405162461bcd60e51b81526004016105db90611c3b565b61094f8382611c24565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610985908490611c8a565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d2c833981519152856040516109bf91815260200190565b60405180910390a3506001949350505050565b60006109df3383336113b5565b92915050565b6007546001600160a01b03163314610a0f5760405162461bcd60e51b81526004016105db90611b9c565b60045460ff16610a1e57600080fd5b6004805460ff19908116909155600780546001600160a01b039093166001600160a01b0319938416811790915560008181526005602052604081208054909316600190811790935560068054938401815590527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054909216179055565b336000818152600260205260408120549091610abb91816113b5565b905090565b3360009081526005602052604081205460ff16610aef5760405162461bcd60e51b81526004016105db90611b9c565b610af98383611467565b50600192915050565b6007546000906001600160a01b03163314610b2f5760405162461bcd60e51b81526004016105db90611b9c565b6001600160a01b038216610b555760405162461bcd60e51b81526004016105db90611ca2565b60075460405142916001600160a01b03808616929116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a450600780546001600160a01b0383166001600160a01b031991821617909155600a805490911690556000600b5560015b919050565b600454600090610100900460ff1615610c225760405162461bcd60e51b815260206004820152601960248201527f416e7973776170563645524332303a207661756c744f6e6c790000000000000060448201526064016105db565b6001600160a01b038216610c485760405162461bcd60e51b81526004016105db90611ca2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590610c8e57503360009081526002602052604090205483115b15610ccd57610cc86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611534565b610cd7565b610cd733846115a5565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106f4565b6007546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016105db90611b9c565b6001600160a01b038116610d645760405162461bcd60e51b81526004016105db90611ca2565b600a80546001600160a01b0319166001600160a01b038316179055610d8a600042611c8a565b600b5550565b6000610dc76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611534565b61060483836116ea565b60068181548110610de157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001805461061890611bd3565b3360009081526005602052604081205460ff16610e375760405162461bcd60e51b81526004016105db90611b9c565b610af983836115a5565b60606006805480602002602001604051908101604052809291908181526020018280548015610e9957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e7b575b5050505050905090565b60006001600160a01b03831615801590610ec657506001600160a01b0383163014155b610ecf57600080fd5b3360009081526002602052604090205482811015610eff5760405162461bcd60e51b81526004016105db90611c3b565b610f098382611c24565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290610f3c908490611c8a565b90915550506040518381526001600160a01b038516903390600080516020611d2c833981519152906020015b60405180910390a35060019392505050565b6000610fb16001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611534565b6109df82336116ea565b6007546000906001600160a01b03163314610dc75760405162461bcd60e51b81526004016105db90611b9c565b6007546001600160a01b031633146110125760405162461bcd60e51b81526004016105db90611b9c565b600480549115156101000261ff0019909216919091179055565b6007546001600160a01b031633146110565760405162461bcd60e51b81526004016105db90611b9c565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190611cd9565b905061113b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611534565b61114581336116ea565b91505090565b6007546001600160a01b031633146111755760405162461bcd60e51b81526004016105db90611b9c565b600a546001600160a01b0316158015906111915750600b544210155b61119a57600080fd5b600a8054600780546001600160a01b03199081166001600160a01b038416179091551690556000600b55565b3360009081526005602052604081205460ff166111f55760405162461bcd60e51b81526004016105db90611b9c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316158015906112b557506040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561128e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b29190611cd9565b10155b156112f3576112ee6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611767565b6112fd565b6112fd8383611467565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d6184604051610f6891815260200190565b6007546001600160a01b031633146113635760405162461bcd60e51b81526004016105db90611b9c565b6001600160a01b0381166113895760405162461bcd60e51b81526004016105db90611ca2565b600880546001600160a01b0319166001600160a01b0383161790556113af600042611c8a565b60095550565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061141857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61142157600080fd5b61142b84846115a5565b61145f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611767565b509092915050565b6001600160a01b0382166114bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105db565b80600360008282546114cf9190611c8a565b90915550506001600160a01b038216600090815260026020526040812080548392906114fc908490611c8a565b90915550506040518181526001600160a01b03831690600090600080516020611d2c8339815191529060200160405180910390a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261159f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261179c565b50505050565b6001600160a01b0382166116055760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105db565b6001600160a01b038216600090815260026020526040902054818110156116795760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105db565b6116838282611c24565b6001600160a01b038416600090815260026020526040812091909155600380548492906116b1908490611c24565b90915550506040518281526000906001600160a01b03851690600080516020611d2c8339815191529060200160405180910390a3505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061174d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61175657600080fd5b6117608284611467565b5090919050565b6040516001600160a01b03831660248201526044810182905261179790849063a9059cbb60e01b90606401611568565b505050565b6117ae826001600160a01b0316611923565b6117fa5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105db565b600080836001600160a01b0316836040516118159190611cf2565b6000604051808303816000865af19150503d8060008114611852576040519150601f19603f3d011682016040523d82523d6000602084013e611857565b606091505b5091509150816118a95760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105db565b80511561159f57808060200190518101906118c49190611d0e565b61159f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105db565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105ef5750141592915050565b80356001600160a01b0381168114610bc257600080fd5b60008060006060848603121561198657600080fd5b61198f8461195a565b9250602084013591506119a46040850161195a565b90509250925092565b600080604083850312156119c057600080fd5b823591506119d06020840161195a565b90509250929050565b60005b838110156119f45781810151838201526020016119dc565b8381111561159f5750506000910152565b6020815260008251806020840152611a248160408501602087016119d9565b601f01601f19169190910160400192915050565b60008060408385031215611a4b57600080fd5b611a548361195a565b946020939093013593505050565b600080600060608486031215611a7757600080fd5b611a808461195a565b9250611a8e6020850161195a565b9150604084013590509250925092565b600060208284031215611ab057600080fd5b5035919050565b600060208284031215611ac957600080fd5b6106048261195a565b6020808252825182820181905260009190848201906040850190845b81811015611b135783516001600160a01b031683529284019291840191600101611aee565b50909695505050505050565b8015158114611b2d57600080fd5b50565b600060208284031215611b4257600080fd5b813561060481611b1f565b60008060408385031215611b6057600080fd5b611b698361195a565b91506119d06020840161195a565b600080600060608486031215611b8c57600080fd5b83359250611a8e6020850161195a565b60208082526019908201527f416e7973776170563645524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c90821680611be757607f821691505b60208210811415611c0857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015611c3657611c36611c0e565b500390565b6020808252602f908201527f416e7973776170563645524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60008219821115611c9d57611c9d611c0e565b500190565b6020808252601a908201527f416e7973776170563645524332303a2061646472657373283029000000000000604082015260600190565b600060208284031215611ceb57600080fd5b5051919050565b60008251611d048184602087016119d9565b9190910192915050565b600060208284031215611d2057600080fd5b815161060481611b1f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209734084effc2e502e3c1fb12664c3425941c085179fbae9c6220968b84f9992b64736f6c634300080a0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for
interesting conversations.