Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TokenOWL
Compiler Version
v0.5.2+commit.1df8f40c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-04-15 */ // File: @gnosis.pm/util-contracts/contracts/Math.sol pragma solidity ^0.5.2; /// @title Math library - Allows calculation of logarithmic and exponential functions /// @author Alan Lu - <[email protected]> /// @author Stefan George - <[email protected]> library GnosisMath { /* * Constants */ // This is equal to 1 in our calculations uint public constant ONE = 0x10000000000000000; uint public constant LN2 = 0xb17217f7d1cf79ac; uint public constant LOG2_E = 0x171547652b82fe177; /* * Public functions */ /// @dev Returns natural exponential function value of given x /// @param x x /// @return e**x function exp(int x) public pure returns (uint) { // revert if x is > MAX_POWER, where // MAX_POWER = int(mp.floor(mp.log(mpf(2**256 - 1) / ONE) * ONE)) require(x <= 2454971259878909886679); // return 0 if exp(x) is tiny, using // MIN_POWER = int(mp.floor(mp.log(mpf(1) / ONE) * ONE)) if (x < -818323753292969962227) return 0; // Transform so that e^x -> 2^x x = x * int(ONE) / int(LN2); // 2^x = 2^whole(x) * 2^frac(x) // ^^^^^^^^^^ is a bit shift // so Taylor expand on z = frac(x) int shift; uint z; if (x >= 0) { shift = x / int(ONE); z = uint(x % int(ONE)); } else { shift = x / int(ONE) - 1; z = ONE - uint(-x % int(ONE)); } // 2^x = 1 + (ln 2) x + (ln 2)^2/2! x^2 + ... // // Can generate the z coefficients using mpmath and the following lines // >>> from mpmath import mp // >>> mp.dps = 100 // >>> ONE = 0x10000000000000000 // >>> print('\n'.join(hex(int(mp.log(2)**i / mp.factorial(i) * ONE)) for i in range(1, 7))) // 0xb17217f7d1cf79ab // 0x3d7f7bff058b1d50 // 0xe35846b82505fc5 // 0x276556df749cee5 // 0x5761ff9e299cc4 // 0xa184897c363c3 uint zpow = z; uint result = ONE; result += 0xb17217f7d1cf79ab * zpow / ONE; zpow = zpow * z / ONE; result += 0x3d7f7bff058b1d50 * zpow / ONE; zpow = zpow * z / ONE; result += 0xe35846b82505fc5 * zpow / ONE; zpow = zpow * z / ONE; result += 0x276556df749cee5 * zpow / ONE; zpow = zpow * z / ONE; result += 0x5761ff9e299cc4 * zpow / ONE; zpow = zpow * z / ONE; result += 0xa184897c363c3 * zpow / ONE; zpow = zpow * z / ONE; result += 0xffe5fe2c4586 * zpow / ONE; zpow = zpow * z / ONE; result += 0x162c0223a5c8 * zpow / ONE; zpow = zpow * z / ONE; result += 0x1b5253d395e * zpow / ONE; zpow = zpow * z / ONE; result += 0x1e4cf5158b * zpow / ONE; zpow = zpow * z / ONE; result += 0x1e8cac735 * zpow / ONE; zpow = zpow * z / ONE; result += 0x1c3bd650 * zpow / ONE; zpow = zpow * z / ONE; result += 0x1816193 * zpow / ONE; zpow = zpow * z / ONE; result += 0x131496 * zpow / ONE; zpow = zpow * z / ONE; result += 0xe1b7 * zpow / ONE; zpow = zpow * z / ONE; result += 0x9c7 * zpow / ONE; if (shift >= 0) { if (result >> (256 - shift) > 0) return (2 ** 256 - 1); return result << shift; } else return result >> (-shift); } /// @dev Returns natural logarithm value of given x /// @param x x /// @return ln(x) function ln(uint x) public pure returns (int) { require(x > 0); // binary search for floor(log2(x)) int ilog2 = floorLog2(x); int z; if (ilog2 < 0) z = int(x << uint(-ilog2)); else z = int(x >> uint(ilog2)); // z = x * 2^-⌊log₂x⌋ // so 1 <= z < 2 // and ln z = ln x - ⌊log₂x⌋/log₂e // so just compute ln z using artanh series // and calculate ln x from that int term = (z - int(ONE)) * int(ONE) / (z + int(ONE)); int halflnz = term; int termpow = term * term / int(ONE) * term / int(ONE); halflnz += termpow / 3; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 5; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 7; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 9; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 11; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 13; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 15; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 17; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 19; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 21; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 23; termpow = termpow * term / int(ONE) * term / int(ONE); halflnz += termpow / 25; return (ilog2 * int(ONE)) * int(ONE) / int(LOG2_E) + 2 * halflnz; } /// @dev Returns base 2 logarithm value of given x /// @param x x /// @return logarithmic value function floorLog2(uint x) public pure returns (int lo) { lo = -64; int hi = 193; // I use a shift here instead of / 2 because it floors instead of rounding towards 0 int mid = (hi + lo) >> 1; while ((lo + 1) < hi) { if (mid < 0 && x << uint(-mid) < ONE || mid >= 0 && x >> uint(mid) < ONE) hi = mid; else lo = mid; mid = (hi + lo) >> 1; } } /// @dev Returns maximum of an array /// @param nums Numbers to look through /// @return Maximum number function max(int[] memory nums) public pure returns (int maxNum) { require(nums.length > 0); maxNum = -2 ** 255; for (uint i = 0; i < nums.length; i++) if (nums[i] > maxNum) maxNum = nums[i]; } /// @dev Returns whether an add operation causes an overflow /// @param a First addend /// @param b Second addend /// @return Did no overflow occur? function safeToAdd(uint a, uint b) internal pure returns (bool) { return a + b >= a; } /// @dev Returns whether a subtraction operation causes an underflow /// @param a Minuend /// @param b Subtrahend /// @return Did no underflow occur? function safeToSub(uint a, uint b) internal pure returns (bool) { return a >= b; } /// @dev Returns whether a multiply operation causes an overflow /// @param a First factor /// @param b Second factor /// @return Did no overflow occur? function safeToMul(uint a, uint b) internal pure returns (bool) { return b == 0 || a * b / b == a; } /// @dev Returns sum if no overflow occurred /// @param a First addend /// @param b Second addend /// @return Sum function add(uint a, uint b) internal pure returns (uint) { require(safeToAdd(a, b)); return a + b; } /// @dev Returns difference if no overflow occurred /// @param a Minuend /// @param b Subtrahend /// @return Difference function sub(uint a, uint b) internal pure returns (uint) { require(safeToSub(a, b)); return a - b; } /// @dev Returns product if no overflow occurred /// @param a First factor /// @param b Second factor /// @return Product function mul(uint a, uint b) internal pure returns (uint) { require(safeToMul(a, b)); return a * b; } /// @dev Returns whether an add operation causes an overflow /// @param a First addend /// @param b Second addend /// @return Did no overflow occur? function safeToAdd(int a, int b) internal pure returns (bool) { return (b >= 0 && a + b >= a) || (b < 0 && a + b < a); } /// @dev Returns whether a subtraction operation causes an underflow /// @param a Minuend /// @param b Subtrahend /// @return Did no underflow occur? function safeToSub(int a, int b) internal pure returns (bool) { return (b >= 0 && a - b <= a) || (b < 0 && a - b > a); } /// @dev Returns whether a multiply operation causes an overflow /// @param a First factor /// @param b Second factor /// @return Did no overflow occur? function safeToMul(int a, int b) internal pure returns (bool) { return (b == 0) || (a * b / b == a); } /// @dev Returns sum if no overflow occurred /// @param a First addend /// @param b Second addend /// @return Sum function add(int a, int b) internal pure returns (int) { require(safeToAdd(a, b)); return a + b; } /// @dev Returns difference if no overflow occurred /// @param a Minuend /// @param b Subtrahend /// @return Difference function sub(int a, int b) internal pure returns (int) { require(safeToSub(a, b)); return a - b; } /// @dev Returns product if no overflow occurred /// @param a First factor /// @param b Second factor /// @return Product function mul(int a, int b) internal pure returns (int) { require(safeToMul(a, b)); return a * b; } } // File: @gnosis.pm/util-contracts/contracts/Token.sol /// Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md pragma solidity ^0.5.2; /// @title Abstract token contract - Functions to be implemented by token contracts contract Token { /* * Events */ event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); /* * Public functions */ function transfer(address to, uint value) public returns (bool); function transferFrom(address from, address to, uint value) public returns (bool); function approve(address spender, uint value) public returns (bool); function balanceOf(address owner) public view returns (uint); function allowance(address owner, address spender) public view returns (uint); function totalSupply() public view returns (uint); } // File: @gnosis.pm/util-contracts/contracts/Proxy.sol pragma solidity ^0.5.2; /// @title Proxied - indicates that a contract will be proxied. Also defines storage requirements for Proxy. /// @author Alan Lu - <[email protected]> contract Proxied { address public masterCopy; } /// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. /// @author Stefan George - <[email protected]> contract Proxy is Proxied { /// @dev Constructor function sets address of master copy contract. /// @param _masterCopy Master copy address. constructor(address _masterCopy) public { require(_masterCopy != address(0), "The master copy is required"); masterCopy = _masterCopy; } /// @dev Fallback function forwards all transactions and returns all received return data. function() external payable { address _masterCopy = masterCopy; assembly { calldatacopy(0, 0, calldatasize) let success := delegatecall(not(0), _masterCopy, 0, calldatasize, 0, 0) returndatacopy(0, 0, returndatasize) switch success case 0 { revert(0, returndatasize) } default { return(0, returndatasize) } } } } // File: @gnosis.pm/util-contracts/contracts/GnosisStandardToken.sol pragma solidity ^0.5.2; /** * Deprecated: Use Open Zeppeling one instead */ contract StandardTokenData { /* * Storage */ mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowances; uint totalTokens; } /** * Deprecated: Use Open Zeppeling one instead */ /// @title Standard token contract with overflow protection contract GnosisStandardToken is Token, StandardTokenData { using GnosisMath for *; /* * Public functions */ /// @dev Transfers sender's tokens to a given address. Returns success /// @param to Address of token receiver /// @param value Number of tokens to transfer /// @return Was transfer successful? function transfer(address to, uint value) public returns (bool) { if (!balances[msg.sender].safeToSub(value) || !balances[to].safeToAdd(value)) { return false; } balances[msg.sender] -= value; balances[to] += value; emit Transfer(msg.sender, to, value); return true; } /// @dev Allows allowed third party to transfer tokens from one address to another. Returns success /// @param from Address from where tokens are withdrawn /// @param to Address to where tokens are sent /// @param value Number of tokens to transfer /// @return Was transfer successful? function transferFrom(address from, address to, uint value) public returns (bool) { if (!balances[from].safeToSub(value) || !allowances[from][msg.sender].safeToSub( value ) || !balances[to].safeToAdd(value)) { return false; } balances[from] -= value; allowances[from][msg.sender] -= value; balances[to] += value; emit Transfer(from, to, value); return true; } /// @dev Sets approved amount of tokens for spender. Returns success /// @param spender Address of allowed account /// @param value Number of approved tokens /// @return Was approval successful? function approve(address spender, uint value) public returns (bool) { allowances[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /// @dev Returns number of allowed tokens for given address /// @param owner Address of token owner /// @param spender Address of token spender /// @return Remaining allowance for spender function allowance(address owner, address spender) public view returns (uint) { return allowances[owner][spender]; } /// @dev Returns number of tokens owned by given address /// @param owner Address of token owner /// @return Balance of owner function balanceOf(address owner) public view returns (uint) { return balances[owner]; } /// @dev Returns total supply of tokens /// @return Total supply function totalSupply() public view returns (uint) { return totalTokens; } } // File: contracts/TokenOWL.sol pragma solidity ^0.5.2; contract TokenOWL is Proxied, GnosisStandardToken { using GnosisMath for *; string public constant name = "OWL Token"; string public constant symbol = "OWL"; uint8 public constant decimals = 18; struct masterCopyCountdownType { address masterCopy; uint timeWhenAvailable; } masterCopyCountdownType masterCopyCountdown; address public creator; address public minter; event Minted(address indexed to, uint256 amount); event Burnt(address indexed from, address indexed user, uint256 amount); modifier onlyCreator() { // R1 require(msg.sender == creator, "Only the creator can perform the transaction"); _; } /// @dev trickers the update process via the proxyMaster for a new address _masterCopy /// updating is only possible after 30 days function startMasterCopyCountdown(address _masterCopy) public onlyCreator { require(address(_masterCopy) != address(0), "The master copy must be a valid address"); // Update masterCopyCountdown masterCopyCountdown.masterCopy = _masterCopy; masterCopyCountdown.timeWhenAvailable = now + 30 days; } /// @dev executes the update process via the proxyMaster for a new address _masterCopy function updateMasterCopy() public onlyCreator { require(address(masterCopyCountdown.masterCopy) != address(0), "The master copy must be a valid address"); require( block.timestamp >= masterCopyCountdown.timeWhenAvailable, "It's not possible to update the master copy during the waiting period" ); // Update masterCopy masterCopy = masterCopyCountdown.masterCopy; } function getMasterCopy() public view returns (address) { return masterCopy; } /// @dev Set minter. Only the creator of this contract can call this. /// @param newMinter The new address authorized to mint this token function setMinter(address newMinter) public onlyCreator { minter = newMinter; } /// @dev change owner/creator of the contract. Only the creator/owner of this contract can call this. /// @param newOwner The new address, which should become the owner function setNewOwner(address newOwner) public onlyCreator { creator = newOwner; } /// @dev Mints OWL. /// @param to Address to which the minted token will be given /// @param amount Amount of OWL to be minted function mintOWL(address to, uint amount) public { require(minter != address(0), "The minter must be initialized"); require(msg.sender == minter, "Only the minter can mint OWL"); balances[to] = balances[to].add(amount); totalTokens = totalTokens.add(amount); emit Minted(to, amount); emit Transfer(address(0), to, amount); } /// @dev Burns OWL. /// @param user Address of OWL owner /// @param amount Amount of OWL to be burnt function burnOWL(address user, uint amount) public { allowances[user][msg.sender] = allowances[user][msg.sender].sub(amount); balances[user] = balances[user].sub(amount); totalTokens = totalTokens.sub(amount); emit Burnt(msg.sender, user, amount); emit Transfer(user, address(0), amount); } function getMasterCopyCountdown() public view returns (address, uint) { return (masterCopyCountdown.masterCopy, masterCopyCountdown.timeWhenAvailable); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMasterCopy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateMasterCopy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnOWL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masterCopy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintOWL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"setNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_masterCopy","type":"address"}],"name":"startMasterCopyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMinter","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMasterCopyCountdown","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b50610e27806100206000396000f3fe608060405234801561001057600080fd5b5060043610610149576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100ca578063f52a41f31161008e578063f52a41f314610373578063f5a1f5b41461039f578063f625ee28146103c5578063fca3b5aa146103eb578063ffa4e0c81461041157610149565b806370a08231146102e357806395d89b4114610309578063a619486e14610311578063a9059cbb14610319578063dd62ed3e1461034557610149565b806318160ddd1161011157806318160ddd1461023f57806323b872dd146102595780632cef4dac1461028f578063313ce567146102995780634417f4db146102b757610149565b806302d05d3f1461014e57806304e80e901461017257806306fdde031461017a57806307546172146101f7578063095ea7b3146101ff575b600080fd5b61015661043c565b60408051600160a060020a039092168252519081900360200190f35b61015661044b565b61018261045a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bc5781810151838201526020016101a4565b50505050905090810190601f1680156101e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610156610491565b61022b6004803603604081101561021557600080fd5b50600160a060020a0381351690602001356104a0565b604080519115158252519081900360200190f35b610247610507565b60408051918252519081900360200190f35b61022b6004803603606081101561026f57600080fd5b50600160a060020a0381358116916020810135909116906040013561050d565b610297610628565b005b6102a1610735565b6040805160ff9092168252519081900360200190f35b610297600480360360408110156102cd57600080fd5b50600160a060020a03813516906020013561073a565b610247600480360360208110156102f957600080fd5b5035600160a060020a0316610851565b61018261086c565b6101566108a3565b61022b6004803603604081101561032f57600080fd5b50600160a060020a0381351690602001356108b2565b6102476004803603604081101561035b57600080fd5b50600160a060020a038135811691602001351661096d565b6102976004803603604081101561038957600080fd5b50600160a060020a038135169060200135610998565b610297600480360360208110156103b557600080fd5b5035600160a060020a0316610b26565b610297600480360360208110156103db57600080fd5b5035600160a060020a0316610ba1565b6102976004803603602081101561040157600080fd5b5035600160a060020a0316610c6f565b610419610cea565b60408051600160a060020a03909316835260208301919091528051918290030190f35b600654600160a060020a031681565b600054600160a060020a031690565b60408051808201909152600981527f4f574c20546f6b656e0000000000000000000000000000000000000000000000602082015281565b600754600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60035490565b600160a060020a038316600090815260016020526040812054610536908363ffffffff610cfe16565b15806105735750600160a060020a0384166000908152600260209081526040808320338452909152902054610571908363ffffffff610cfe16565b155b806105a45750600160a060020a0383166000908152600160205260409020546105a2908363ffffffff610d0316565b155b156105b157506000610621565b600160a060020a038085166000818152600160208181526040808420805489900390556002825280842033855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020610ddc83398151915292908290030190a35060015b9392505050565b600654600160a060020a031633146106745760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b600454600160a060020a031615156106c05760405160e560020a62461bcd028152600401808060200182810382526027815260200180610d706027913960400191505060405180910390fd5b6005544210156107045760405160e560020a62461bcd028152600401808060200182810382526045815260200180610d976045913960600191505060405180910390fd5b6004546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b601281565b600160a060020a038216600090815260026020908152604080832033845290915290205461076e908263ffffffff610d0a16565b600160a060020a0383166000818152600260209081526040808320338452825280832094909455918152600190915220546107af908263ffffffff610d0a16565b600160a060020a0383166000908152600160205260409020556003546107db908263ffffffff610d0a16565b600355604080518281529051600160a060020a0384169133917fe8a89cc6e5096f9d9f43de82c077c1f4cfe707c0e0c2032176c68813b9ae6a5c9181900360200190a3604080518281529051600091600160a060020a03851691600080516020610ddc8339815191529181900360200190a35050565b600160a060020a031660009081526001602052604090205490565b60408051808201909152600381527f4f574c0000000000000000000000000000000000000000000000000000000000602082015281565b600054600160a060020a031681565b336000908152600160205260408120546108d2908363ffffffff610cfe16565b15806109045750600160a060020a038316600090815260016020526040902054610902908363ffffffff610d0316565b155b1561091157506000610501565b33600081815260016020908152604080832080548790039055600160a060020a0387168084529281902080548701905580518681529051929392600080516020610ddc833981519152929181900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600754600160a060020a031615156109fa576040805160e560020a62461bcd02815260206004820152601e60248201527f546865206d696e746572206d75737420626520696e697469616c697a65640000604482015290519081900360640190fd5b600754600160a060020a03163314610a5c576040805160e560020a62461bcd02815260206004820152601c60248201527f4f6e6c7920746865206d696e7465722063616e206d696e74204f574c00000000604482015290519081900360640190fd5b600160a060020a038216600090815260016020526040902054610a85908263ffffffff610d2716565b600160a060020a038316600090815260016020526040902055600354610ab1908263ffffffff610d2716565b600355604080518281529051600160a060020a038416917f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe919081900360200190a2604080518281529051600160a060020a03841691600091600080516020610ddc8339815191529181900360200190a35050565b600654600160a060020a03163314610b725760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600654600160a060020a03163314610bed5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b600160a060020a0381161515610c375760405160e560020a62461bcd028152600401808060200182810382526027815260200180610d706027913960400191505060405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790554262278d0001600555565b600654600160a060020a03163314610cbb5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600454600554600160a060020a0390911691565b111590565b8101101590565b6000610d168383610cfe565b1515610d2157600080fd5b50900390565b6000610d338383610d03565b1515610d3e57600080fd5b50019056fe4f6e6c79207468652063726561746f722063616e20706572666f726d20746865207472616e73616374696f6e546865206d617374657220636f7079206d75737420626520612076616c6964206164647265737349742773206e6f7420706f737369626c6520746f2075706461746520746865206d617374657220636f707920647572696e67207468652077616974696e6720706572696f64ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058201526f6ecb39910ef4b3a53a7326cc8b96898ad6bf64c335e452f08cb475d9f1d0029
Deployed Bytecode
0x608060405234801561001057600080fd5b5060043610610149576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100ca578063f52a41f31161008e578063f52a41f314610373578063f5a1f5b41461039f578063f625ee28146103c5578063fca3b5aa146103eb578063ffa4e0c81461041157610149565b806370a08231146102e357806395d89b4114610309578063a619486e14610311578063a9059cbb14610319578063dd62ed3e1461034557610149565b806318160ddd1161011157806318160ddd1461023f57806323b872dd146102595780632cef4dac1461028f578063313ce567146102995780634417f4db146102b757610149565b806302d05d3f1461014e57806304e80e901461017257806306fdde031461017a57806307546172146101f7578063095ea7b3146101ff575b600080fd5b61015661043c565b60408051600160a060020a039092168252519081900360200190f35b61015661044b565b61018261045a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101bc5781810151838201526020016101a4565b50505050905090810190601f1680156101e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610156610491565b61022b6004803603604081101561021557600080fd5b50600160a060020a0381351690602001356104a0565b604080519115158252519081900360200190f35b610247610507565b60408051918252519081900360200190f35b61022b6004803603606081101561026f57600080fd5b50600160a060020a0381358116916020810135909116906040013561050d565b610297610628565b005b6102a1610735565b6040805160ff9092168252519081900360200190f35b610297600480360360408110156102cd57600080fd5b50600160a060020a03813516906020013561073a565b610247600480360360208110156102f957600080fd5b5035600160a060020a0316610851565b61018261086c565b6101566108a3565b61022b6004803603604081101561032f57600080fd5b50600160a060020a0381351690602001356108b2565b6102476004803603604081101561035b57600080fd5b50600160a060020a038135811691602001351661096d565b6102976004803603604081101561038957600080fd5b50600160a060020a038135169060200135610998565b610297600480360360208110156103b557600080fd5b5035600160a060020a0316610b26565b610297600480360360208110156103db57600080fd5b5035600160a060020a0316610ba1565b6102976004803603602081101561040157600080fd5b5035600160a060020a0316610c6f565b610419610cea565b60408051600160a060020a03909316835260208301919091528051918290030190f35b600654600160a060020a031681565b600054600160a060020a031690565b60408051808201909152600981527f4f574c20546f6b656e0000000000000000000000000000000000000000000000602082015281565b600754600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60035490565b600160a060020a038316600090815260016020526040812054610536908363ffffffff610cfe16565b15806105735750600160a060020a0384166000908152600260209081526040808320338452909152902054610571908363ffffffff610cfe16565b155b806105a45750600160a060020a0383166000908152600160205260409020546105a2908363ffffffff610d0316565b155b156105b157506000610621565b600160a060020a038085166000818152600160208181526040808420805489900390556002825280842033855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020610ddc83398151915292908290030190a35060015b9392505050565b600654600160a060020a031633146106745760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b600454600160a060020a031615156106c05760405160e560020a62461bcd028152600401808060200182810382526027815260200180610d706027913960400191505060405180910390fd5b6005544210156107045760405160e560020a62461bcd028152600401808060200182810382526045815260200180610d976045913960600191505060405180910390fd5b6004546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b601281565b600160a060020a038216600090815260026020908152604080832033845290915290205461076e908263ffffffff610d0a16565b600160a060020a0383166000818152600260209081526040808320338452825280832094909455918152600190915220546107af908263ffffffff610d0a16565b600160a060020a0383166000908152600160205260409020556003546107db908263ffffffff610d0a16565b600355604080518281529051600160a060020a0384169133917fe8a89cc6e5096f9d9f43de82c077c1f4cfe707c0e0c2032176c68813b9ae6a5c9181900360200190a3604080518281529051600091600160a060020a03851691600080516020610ddc8339815191529181900360200190a35050565b600160a060020a031660009081526001602052604090205490565b60408051808201909152600381527f4f574c0000000000000000000000000000000000000000000000000000000000602082015281565b600054600160a060020a031681565b336000908152600160205260408120546108d2908363ffffffff610cfe16565b15806109045750600160a060020a038316600090815260016020526040902054610902908363ffffffff610d0316565b155b1561091157506000610501565b33600081815260016020908152604080832080548790039055600160a060020a0387168084529281902080548701905580518681529051929392600080516020610ddc833981519152929181900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600754600160a060020a031615156109fa576040805160e560020a62461bcd02815260206004820152601e60248201527f546865206d696e746572206d75737420626520696e697469616c697a65640000604482015290519081900360640190fd5b600754600160a060020a03163314610a5c576040805160e560020a62461bcd02815260206004820152601c60248201527f4f6e6c7920746865206d696e7465722063616e206d696e74204f574c00000000604482015290519081900360640190fd5b600160a060020a038216600090815260016020526040902054610a85908263ffffffff610d2716565b600160a060020a038316600090815260016020526040902055600354610ab1908263ffffffff610d2716565b600355604080518281529051600160a060020a038416917f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe919081900360200190a2604080518281529051600160a060020a03841691600091600080516020610ddc8339815191529181900360200190a35050565b600654600160a060020a03163314610b725760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600654600160a060020a03163314610bed5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b600160a060020a0381161515610c375760405160e560020a62461bcd028152600401808060200182810382526027815260200180610d706027913960400191505060405180910390fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790554262278d0001600555565b600654600160a060020a03163314610cbb5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180610d44602c913960400191505060405180910390fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600454600554600160a060020a0390911691565b111590565b8101101590565b6000610d168383610cfe565b1515610d2157600080fd5b50900390565b6000610d338383610d03565b1515610d3e57600080fd5b50019056fe4f6e6c79207468652063726561746f722063616e20706572666f726d20746865207472616e73616374696f6e546865206d617374657220636f7079206d75737420626520612076616c6964206164647265737349742773206e6f7420706f737369626c6520746f2075706461746520746865206d617374657220636f707920647572696e67207468652077616974696e6720706572696f64ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058201526f6ecb39910ef4b3a53a7326cc8b96898ad6bf64c335e452f08cb475d9f1d0029
Swarm Source
bzzr://1526f6ecb39910ef4b3a53a7326cc8b96898ad6bf64c335e452f08cb475d9f1d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.