Overview
FTM Balance
0 FTM
FTM Value
$0.00More Info
Private Name Tags
ContractCreator
Sponsored
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
48695528 | 701 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
LevelManager
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 100 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: LICENSED // Solidity files have to start with this pragma. // It will be used by the Solidity compiler to validate its version. pragma solidity ^0.7.0; import "./MultiSigOwner.sol"; import "./Manager.sol"; import "./interfaces/ICard.sol"; import "./libraries/SafeMath.sol"; contract LevelManager is MultiSigOwner, Manager { using SafeMath for uint256; // current user level of each user. 1~5 level enabled. mapping(address => uint256) public usersLevel; // the time okse amount is updated mapping(address => uint256) public usersOkseUpdatedTime; // this is validation period after user change his okse balance for this contract, normally is 30 days. we set 10 mnutes for testing. uint256 public levelValidationPeriod; // daily limit contants uint256 public constant MAX_LEVEL = 5; uint256[] public OkseStakeAmounts; event UserLevelChanged(address userAddr, uint256 newLevel); event OkseStakeAmountChanged(uint256 index, uint256 _amount); event LevelValidationPeriodChanged(uint256 levelValidationPeriod); constructor(address _cardContract) Manager(_cardContract) { levelValidationPeriod = 1 days; // levelValidationPeriod = 10 minutes; //for testing OkseStakeAmounts = [ 5000 ether, 25000 ether, 50000 ether, 100000 ether, 250000 ether ]; } ////////////////////////// Read functions ///////////////////////////////////////////////////////////// function getUserLevel(address userAddr) public view returns (uint256) { uint256 newLevel = getLevel( ICard(cardContract).getUserOkseBalance(userAddr) ); if (newLevel < usersLevel[userAddr]) { return newLevel; } else { if ( usersOkseUpdatedTime[userAddr].add(levelValidationPeriod) < block.timestamp ) { return newLevel; } else { // do something ... } } return usersLevel[userAddr]; } /** * @notice Get user level from his okse balance * @param _okseAmount okse token amount * @return user's level, 0~5 , 0 => no level */ // verified function getLevel(uint256 _okseAmount) public view returns (uint256) { if (_okseAmount < OkseStakeAmounts[0]) return 0; if (_okseAmount < OkseStakeAmounts[1]) return 1; if (_okseAmount < OkseStakeAmounts[2]) return 2; if (_okseAmount < OkseStakeAmounts[3]) return 3; if (_okseAmount < OkseStakeAmounts[4]) return 4; return 5; } ///////////////// CallBack functions from card contract ////////////////////////////////////////////// function updateUserLevel(address userAddr, uint256 beforeAmount) external onlyFromCardContract returns (bool) { uint256 newLevel = getLevel( ICard(cardContract).getUserOkseBalance(userAddr) ); if ( usersOkseUpdatedTime[userAddr].add(levelValidationPeriod) < block.timestamp ) { usersLevel[userAddr] = getLevel(beforeAmount); } if (newLevel != usersLevel[userAddr]) usersOkseUpdatedTime[userAddr] = block.timestamp; if (newLevel == usersLevel[userAddr]) return true; if (newLevel < usersLevel[userAddr]) { usersLevel[userAddr] = newLevel; emit UserLevelChanged(userAddr, newLevel); } else { if ( usersOkseUpdatedTime[userAddr].add(levelValidationPeriod) < block.timestamp ) { usersLevel[userAddr] = newLevel; emit UserLevelChanged(userAddr, newLevel); } else { // do somrthing ... } } return false; } //////////////////// Owner functions //////////////////////////////////////////////////////////////// // verified function setLevelValidationPeriod( bytes calldata signData, bytes calldata keys ) public validSignOfOwner(signData, keys, "setLevelValidationPeriod") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); uint256 _newValue = abi.decode(params, (uint256)); levelValidationPeriod = _newValue; emit LevelValidationPeriodChanged(levelValidationPeriod); } // verified function setOkseStakeAmount(bytes calldata signData, bytes calldata keys) public validSignOfOwner(signData, keys, "setOkseStakeAmount") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); (uint256 index, uint256 _amount) = abi.decode( params, (uint256, uint256) ); require(index < MAX_LEVEL, "level<5"); OkseStakeAmounts[index] = _amount; emit OkseStakeAmountChanged(index, _amount); } }
// SPDX-License-Identifier: LICENSED pragma solidity ^0.7.0; pragma abicoder v2; // 2/3 Multi Sig Owner contract MultiSigOwner { address[] public owners; mapping(uint256 => bool) public signatureId; bool private initialized; // events event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); event SignValidTimeChanged(uint256 newValue); modifier validSignOfOwner( bytes calldata signData, bytes calldata keys, string memory functionName ) { require(isOwner(msg.sender), "on"); address signer = getSigner(signData, keys); require( signer != msg.sender && isOwner(signer) && signer != address(0), "is" ); (bytes4 method, uint256 id, uint256 validTime, ) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); require( signatureId[id] == false && method == bytes4(keccak256(bytes(functionName))), "sru" ); require(validTime > block.timestamp, "ep"); signatureId[id] = true; _; } function isOwner(address addr) public view returns (bool) { bool _isOwner = false; for (uint256 i = 0; i < owners.length; i++) { if (owners[i] == addr) { _isOwner = true; } } return _isOwner; } constructor() {} function initializeOwners(address[3] memory _owners) public { require( !initialized && _owners[0] != address(0) && _owners[1] != address(0) && _owners[2] != address(0), "ai" ); owners = [_owners[0], _owners[1], _owners[2]]; initialized = true; } function getSigner(bytes calldata _data, bytes calldata keys) public view returns (address) { uint256 chainId; assembly { chainId := chainid() } (uint8 v, bytes32 r, bytes32 s) = abi.decode( keys, (uint8, bytes32, bytes32) ); return ecrecover( toEthSignedMessageHash( keccak256(abi.encodePacked(this, chainId, _data)) ), v, r, s ); } function encodePackedData(bytes calldata _data) public view returns (bytes32) { uint256 chainId; assembly { chainId := chainid() } return keccak256(abi.encodePacked(this, chainId, _data)); } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { return keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) ); } // Set functions // verified function transferOwnership(bytes calldata signData, bytes calldata keys) public validSignOfOwner(signData, keys, "transferOwnership") { (, , , bytes memory params) = abi.decode( signData, (bytes4, uint256, uint256, bytes) ); address newOwner = abi.decode(params, (address)); uint256 index; for (uint256 i = 0; i < owners.length; i++) { if (owners[i] == msg.sender) { index = i; } } address oldOwner = owners[index]; owners[index] = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
//SPDX-License-Identifier: LICENSED // Solidity files have to start with this pragma. // It will be used by the Solidity compiler to validate its version. pragma solidity ^0.7.0; contract Manager { address public immutable cardContract; constructor(address _cardContract) { cardContract = _cardContract; } /// modifier functions modifier onlyFromCardContract() { require(msg.sender == cardContract, "oc"); _; } }
// SPDX-License-Identifier: LICENSED pragma solidity ^0.7.0; interface ICard { function getUserOkseBalance(address userAddr) external view returns (uint256); function getUserAssetAmount(address userAddr, address market) external view returns (uint256); function usersBalances(address userAddr, address market) external view returns (uint256); function priceOracle() external view returns (address); }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.7.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return add(a, b, "SafeMath: addition overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
{ "optimizer": { "enabled": true, "runs": 100 }, "metadata": { "bytecodeHash": "none", "useLiteralContent": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_cardContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"levelValidationPeriod","type":"uint256"}],"name":"LevelValidationPeriodChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"OkseStakeAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"SignValidTimeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"UserLevelChanged","type":"event"},{"inputs":[],"name":"MAX_LEVEL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"OkseStakeAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"encodePackedData","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_okseAmount","type":"uint256"}],"name":"getLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"getSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddr","type":"address"}],"name":"getUserLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[3]","name":"_owners","type":"address[3]"}],"name":"initializeOwners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"levelValidationPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"setLevelValidationPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"setOkseStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"signatureId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"signData","type":"bytes"},{"internalType":"bytes","name":"keys","type":"bytes"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddr","type":"address"},{"internalType":"uint256","name":"beforeAmount","type":"uint256"}],"name":"updateUserLevel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usersOkseUpdatedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001a7038038062001a70833981810160405260208110156200003757600080fd5b5051606081811b6001600160601b03191660809081526201518060059081556040805160a08101825269010f0cf064dd59200000815269054b40b1f852bda000006020820152690a968163f0a57b4000009181019190915269152d02c7e14af6800000938101939093526934f086f3b33b6840000091830191909152620000c191600691620000c9565b50506200013b565b82805482825590600052602060002090810192821562000112579160200282015b828111156200011257825182906001600160501b0316905591602001919060010190620000ea565b506200012092915062000124565b5090565b5b8082111562000120576000815560010162000125565b60805160601c611908620001686000398061069a5280610b125280610b705280610de052506119086000f3fe608060405234801561001057600080fd5b50600436106100f65760003560e01c8063693bd2d011610092578063693bd2d01461034b5780636f9e4f0b1461035357806375e16b17146103a55780637a7320341461046357806386481d4014610521578063a49062d41461053e578063b2b9f0ed14610546578063b55427d614610563578063d1f21f4f14610589576100f6565b8063025e7c27146100fb5780631add56031461013457806321923bde146101635780632f54bf6e146101895780633c1ce665146101c35780634a069220146101e95780634ad47996146102a9578063584d2165146102d557806368af81e6146102dd575b600080fd5b6101186004803603602081101561011157600080fd5b5035610647565b604080516001600160a01b039092168252519081900360200190f35b6101516004803603602081101561014a57600080fd5b5035610671565b60408051918252519081900360200190f35b6101516004803603602081101561017957600080fd5b50356001600160a01b0316610692565b6101af6004803603602081101561019f57600080fd5b50356001600160a01b03166107b6565b604080519115158252519081900360200190f35b610151600480360360208110156101d957600080fd5b50356001600160a01b031661080b565b6102a7600480360360408110156101ff57600080fd5b810190602081018135600160201b81111561021957600080fd5b82018360208201111561022b57600080fd5b803590602001918460018302840111600160201b8311171561024c57600080fd5b919390929091602081019035600160201b81111561026957600080fd5b82018360208201111561027b57600080fd5b803590602001918460018302840111600160201b8311171561029c57600080fd5b50909250905061081d565b005b6101af600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610b05565b610151610d9d565b610151600480360360208110156102f357600080fd5b810190602081018135600160201b81111561030d57600080fd5b82018360208201111561031f57600080fd5b803590602001918460018302840111600160201b8311171561034057600080fd5b509092509050610da3565b610118610dde565b6102a76004803603606081101561036957600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919450610e029350505050565b610118600480360360408110156103bb57600080fd5b810190602081018135600160201b8111156103d557600080fd5b8201836020820111156103e757600080fd5b803590602001918460018302840111600160201b8311171561040857600080fd5b919390929091602081019035600160201b81111561042557600080fd5b82018360208201111561043757600080fd5b803590602001918460018302840111600160201b8311171561045857600080fd5b509092509050610eba565b6102a76004803603604081101561047957600080fd5b810190602081018135600160201b81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111600160201b831117156104c657600080fd5b919390929091602081019035600160201b8111156104e357600080fd5b8201836020820111156104f557600080fd5b803590602001918460018302840111600160201b8311171561051657600080fd5b509092509050610f63565b6101516004803603602081101561053757600080fd5b50356111da565b6101516112ac565b6101af6004803603602081101561055c57600080fd5b50356112b1565b6101516004803603602081101561057957600080fd5b50356001600160a01b03166112c6565b6102a76004803603604081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b919390929091602081019035600160201b81111561060957600080fd5b82018360208201111561061b57600080fd5b803590602001918460018302840111600160201b8311171561063c57600080fd5b5090925090506112d8565b6000818154811061065757600080fd5b6000918252602090912001546001600160a01b0316905081565b6006818154811061068157600080fd5b600091825260209091200154905081565b6000806107367f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d5c2644856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b50516111da565b6001600160a01b0384166000908152600360205260409020549091508110156107605790506107b1565b6005546001600160a01b03841660009081526004602052604090205442916107889190611537565b10156107955790506107b1565b50506001600160a01b0381166000908152600360205260409020545b919050565b600080805b60005481101561080457836001600160a01b0316600082815481106107dc57fe5b6000918252602090912001546001600160a01b031614156107fc57600191505b6001016107bb565b5092915050565b60046020526000908152604090205481565b83838383604051806040016040528060128152602001711cd95d13dadcd954dd185ad9505b5bdd5b9d60721b815250610855336107b6565b61087a5760405162461bcd60e51b81526004016108719061186e565b60405180910390fd5b600061088886868686610eba565b90506001600160a01b03811633148015906108a757506108a7816107b6565b80156108bb57506001600160a01b03811615155b6108d75760405162461bcd60e51b8152600401610871906118a6565b600080806108e7888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156109215750845160208601206001600160e01b03198481169116145b61093d5760405162461bcd60e51b8152600401610871906118de565b42811161095c5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790558d8d608081101561098757600080fd5b6001600160e01b03198235169160208101359160408201359190810190608081016060820135600160201b8111156109be57600080fd5b8201836020820111156109d057600080fd5b803590602001918460018302840111600160201b831117156109f157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451949b5099508998505060208a019650919450505060408310159150610a4b905057600080fd5b508051602090910151909250905060058210610a98576040805162461bcd60e51b81526020600482015260076024820152666c6576656c3c3560c81b604482015290519081900360640190fd5b8060068381548110610aa657fe5b90600052602060002001819055507fc68672618da386214d6545425b5df109ac24986bf591e2685ec5d041ded0ff188282604051808381526020018281526020019250505060405180910390a150505050505050505050505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b69576040805162461bcd60e51b81526020600482015260026024820152616f6360f01b604482015290519081900360640190fd5b6000610bdb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d5c2644866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561070557600080fd5b6005546001600160a01b0386166000908152600460205260409020549192504291610c0591611537565b1015610c2e57610c14836111da565b6001600160a01b0385166000908152600360205260409020555b6001600160a01b0384166000908152600360205260409020548114610c69576001600160a01b03841660009081526004602052604090204290555b6001600160a01b038416600090815260036020526040902054811415610c93576001915050610d97565b6001600160a01b038416600090815260036020526040902054811015610d0d576001600160a01b0384166000818152600360209081526040918290208490558151928352820183905280517f9c3a8893d79649ee146a28a7d276157b00d5a1831429be1179c8b6374e84337d9281900390910190a1610d91565b6005546001600160a01b0385166000908152600460205260409020544291610d359190611537565b1015610d91576001600160a01b0384166000818152600360209081526040918290208490558151928352820183905280517f9c3a8893d79649ee146a28a7d276157b00d5a1831429be1179c8b6374e84337d9281900390910190a15b60009150505b92915050565b60055481565b6040516000904690610dbf9030908390879087906020016117ec565b6040516020818303038152906040528051906020012091505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025460ff16158015610e1e575080516001600160a01b031615155b8015610e36575060208101516001600160a01b031615155b8015610e4e575060408101516001600160a01b031615155b610e6a5760405162461bcd60e51b8152600401610871906118c2565b6040805160608101825282516001600160a01b039081168252602080850151821690830152838301511691810191909152610ea990600090600361164b565b50506002805460ff19166001179055565b600046818080610ecc868801886117b3565b9250925092506001610f0930868c8c604051602001610eee94939291906117ec565b60405160208183030381529060405280519060200120611580565b84848460405160008152602001604052604051610f299493929190611850565b6020604051602081039080840390855afa158015610f4b573d6000803e3d6000fd5b5050604051601f1901519a9950505050505050505050565b83838383604051806040016040528060188152602001771cd95d13195d995b15985b1a59185d1a5bdb94195c9a5bd960421b815250610fa1336107b6565b610fbd5760405162461bcd60e51b81526004016108719061186e565b6000610fcb86868686610eba565b90506001600160a01b0381163314801590610fea5750610fea816107b6565b8015610ffe57506001600160a01b03811615155b61101a5760405162461bcd60e51b8152600401610871906118a6565b6000808061102a888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156110645750845160208601206001600160e01b03198481169116145b6110805760405162461bcd60e51b8152600401610871906118de565b42811161109f5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790558d8d60808110156110ca57600080fd5b6001600160e01b03198235169160208101359160408201359190810190608081016060820135600160201b81111561110157600080fd5b82018360208201111561111357600080fd5b803590602001918460018302840111600160201b8311171561113457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451949b509950506020808b0198509296505050841015925061118b91505057600080fd5b505160058190556040805182815290519192507f41a00c7eee03e61d1b60dd43612931ec2f38759d03ecdd78c75a5f012000acbc919081900360200190a1505050505050505050505050505050565b600060066000815481106111ea57fe5b9060005260206000200154821015611204575060006107b1565b600660018154811061121257fe5b906000526020600020015482101561122c575060016107b1565b600660028154811061123a57fe5b9060005260206000200154821015611254575060026107b1565b600660038154811061126257fe5b906000526020600020015482101561127c575060036107b1565b600660048154811061128a57fe5b90600052602060002001548210156112a4575060046107b1565b506005919050565b600581565b60016020526000908152604090205460ff1681565b60036020526000908152604090205481565b838383836040518060400160405280601181526020017007472616e736665724f776e65727368697607c1b81525061130f336107b6565b61132b5760405162461bcd60e51b81526004016108719061186e565b600061133986868686610eba565b90506001600160a01b03811633148015906113585750611358816107b6565b801561136c57506001600160a01b03811615155b6113885760405162461bcd60e51b8152600401610871906118a6565b60008080611398888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156113d25750845160208601206001600160e01b03198481169116145b6113ee5760405162461bcd60e51b8152600401610871906118de565b42811161140d5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790556114348d8f018f6116ec565b935050505060008180602001905181019061144f91906116c5565b90506000805b60005481101561149d57336001600160a01b03166000828154811061147657fe5b6000918252602090912001546001600160a01b03161415611495578091505b600101611455565b5060008082815481106114ac57fe5b600091825260208220015481546001600160a01b039091169250849190849081106114d357fe5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051858316928416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050505050505050505050505050505050565b600061157983836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f7700000000008152506115b0565b9392505050565b600081604051602001611593919061181f565b604051602081830303815290604052805190602001209050919050565b600083830182858210156116425760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116075781810151838201526020016115ef565b50505050905090810190601f1680156116345780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b8280548282559060005260206000209081019282156116a0579160200282015b828111156116a057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061166b565b506116ac9291506116b0565b5090565b5b808211156116ac57600081556001016116b1565b6000602082840312156116d6578081fd5b81516001600160a01b0381168114611579578182fd5b60008060008060808587031215611701578283fd5b84356001600160e01b031981168114611718578384fd5b9350602085810135935060408601359250606086013567ffffffffffffffff80821115611743578384fd5b818801915088601f830112611756578384fd5b81358181111561176257fe5b604051601f8201601f191681018501838111828210171561177f57fe5b60405281815283820185018b1015611795578586fd5b81858501868301379081019093019390935250939692955090935050565b6000806000606084860312156117c7578283fd5b833560ff811681146117d7578384fd5b95602085013595506040909401359392505050565b60006bffffffffffffffffffffffff198660601b1682528460148301528284603484013791016034019081529392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526002908201526137b760f11b604082015260600190565b602080825260029082015261065760f41b604082015260600190565b602080825260029082015261697360f01b604082015260600190565b602080825260029082015261616960f01b604082015260600190565b60208082526003908201526273727560e81b60408201526060019056fea164736f6c6343000706000a00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f65760003560e01c8063693bd2d011610092578063693bd2d01461034b5780636f9e4f0b1461035357806375e16b17146103a55780637a7320341461046357806386481d4014610521578063a49062d41461053e578063b2b9f0ed14610546578063b55427d614610563578063d1f21f4f14610589576100f6565b8063025e7c27146100fb5780631add56031461013457806321923bde146101635780632f54bf6e146101895780633c1ce665146101c35780634a069220146101e95780634ad47996146102a9578063584d2165146102d557806368af81e6146102dd575b600080fd5b6101186004803603602081101561011157600080fd5b5035610647565b604080516001600160a01b039092168252519081900360200190f35b6101516004803603602081101561014a57600080fd5b5035610671565b60408051918252519081900360200190f35b6101516004803603602081101561017957600080fd5b50356001600160a01b0316610692565b6101af6004803603602081101561019f57600080fd5b50356001600160a01b03166107b6565b604080519115158252519081900360200190f35b610151600480360360208110156101d957600080fd5b50356001600160a01b031661080b565b6102a7600480360360408110156101ff57600080fd5b810190602081018135600160201b81111561021957600080fd5b82018360208201111561022b57600080fd5b803590602001918460018302840111600160201b8311171561024c57600080fd5b919390929091602081019035600160201b81111561026957600080fd5b82018360208201111561027b57600080fd5b803590602001918460018302840111600160201b8311171561029c57600080fd5b50909250905061081d565b005b6101af600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610b05565b610151610d9d565b610151600480360360208110156102f357600080fd5b810190602081018135600160201b81111561030d57600080fd5b82018360208201111561031f57600080fd5b803590602001918460018302840111600160201b8311171561034057600080fd5b509092509050610da3565b610118610dde565b6102a76004803603606081101561036957600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600092019190915250919450610e029350505050565b610118600480360360408110156103bb57600080fd5b810190602081018135600160201b8111156103d557600080fd5b8201836020820111156103e757600080fd5b803590602001918460018302840111600160201b8311171561040857600080fd5b919390929091602081019035600160201b81111561042557600080fd5b82018360208201111561043757600080fd5b803590602001918460018302840111600160201b8311171561045857600080fd5b509092509050610eba565b6102a76004803603604081101561047957600080fd5b810190602081018135600160201b81111561049357600080fd5b8201836020820111156104a557600080fd5b803590602001918460018302840111600160201b831117156104c657600080fd5b919390929091602081019035600160201b8111156104e357600080fd5b8201836020820111156104f557600080fd5b803590602001918460018302840111600160201b8311171561051657600080fd5b509092509050610f63565b6101516004803603602081101561053757600080fd5b50356111da565b6101516112ac565b6101af6004803603602081101561055c57600080fd5b50356112b1565b6101516004803603602081101561057957600080fd5b50356001600160a01b03166112c6565b6102a76004803603604081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b919390929091602081019035600160201b81111561060957600080fd5b82018360208201111561061b57600080fd5b803590602001918460018302840111600160201b8311171561063c57600080fd5b5090925090506112d8565b6000818154811061065757600080fd5b6000918252602090912001546001600160a01b0316905081565b6006818154811061068157600080fd5b600091825260209091200154905081565b6000806107367f00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd6001600160a01b0316633d5c2644856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d602081101561072f57600080fd5b50516111da565b6001600160a01b0384166000908152600360205260409020549091508110156107605790506107b1565b6005546001600160a01b03841660009081526004602052604090205442916107889190611537565b10156107955790506107b1565b50506001600160a01b0381166000908152600360205260409020545b919050565b600080805b60005481101561080457836001600160a01b0316600082815481106107dc57fe5b6000918252602090912001546001600160a01b031614156107fc57600191505b6001016107bb565b5092915050565b60046020526000908152604090205481565b83838383604051806040016040528060128152602001711cd95d13dadcd954dd185ad9505b5bdd5b9d60721b815250610855336107b6565b61087a5760405162461bcd60e51b81526004016108719061186e565b60405180910390fd5b600061088886868686610eba565b90506001600160a01b03811633148015906108a757506108a7816107b6565b80156108bb57506001600160a01b03811615155b6108d75760405162461bcd60e51b8152600401610871906118a6565b600080806108e7888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156109215750845160208601206001600160e01b03198481169116145b61093d5760405162461bcd60e51b8152600401610871906118de565b42811161095c5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790558d8d608081101561098757600080fd5b6001600160e01b03198235169160208101359160408201359190810190608081016060820135600160201b8111156109be57600080fd5b8201836020820111156109d057600080fd5b803590602001918460018302840111600160201b831117156109f157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451949b5099508998505060208a019650919450505060408310159150610a4b905057600080fd5b508051602090910151909250905060058210610a98576040805162461bcd60e51b81526020600482015260076024820152666c6576656c3c3560c81b604482015290519081900360640190fd5b8060068381548110610aa657fe5b90600052602060002001819055507fc68672618da386214d6545425b5df109ac24986bf591e2685ec5d041ded0ff188282604051808381526020018281526020019250505060405180910390a150505050505050505050505050505050565b6000336001600160a01b037f00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd1614610b69576040805162461bcd60e51b81526020600482015260026024820152616f6360f01b604482015290519081900360640190fd5b6000610bdb7f00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd6001600160a01b0316633d5c2644866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561070557600080fd5b6005546001600160a01b0386166000908152600460205260409020549192504291610c0591611537565b1015610c2e57610c14836111da565b6001600160a01b0385166000908152600360205260409020555b6001600160a01b0384166000908152600360205260409020548114610c69576001600160a01b03841660009081526004602052604090204290555b6001600160a01b038416600090815260036020526040902054811415610c93576001915050610d97565b6001600160a01b038416600090815260036020526040902054811015610d0d576001600160a01b0384166000818152600360209081526040918290208490558151928352820183905280517f9c3a8893d79649ee146a28a7d276157b00d5a1831429be1179c8b6374e84337d9281900390910190a1610d91565b6005546001600160a01b0385166000908152600460205260409020544291610d359190611537565b1015610d91576001600160a01b0384166000818152600360209081526040918290208490558151928352820183905280517f9c3a8893d79649ee146a28a7d276157b00d5a1831429be1179c8b6374e84337d9281900390910190a15b60009150505b92915050565b60055481565b6040516000904690610dbf9030908390879087906020016117ec565b6040516020818303038152906040528051906020012091505092915050565b7f00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd81565b60025460ff16158015610e1e575080516001600160a01b031615155b8015610e36575060208101516001600160a01b031615155b8015610e4e575060408101516001600160a01b031615155b610e6a5760405162461bcd60e51b8152600401610871906118c2565b6040805160608101825282516001600160a01b039081168252602080850151821690830152838301511691810191909152610ea990600090600361164b565b50506002805460ff19166001179055565b600046818080610ecc868801886117b3565b9250925092506001610f0930868c8c604051602001610eee94939291906117ec565b60405160208183030381529060405280519060200120611580565b84848460405160008152602001604052604051610f299493929190611850565b6020604051602081039080840390855afa158015610f4b573d6000803e3d6000fd5b5050604051601f1901519a9950505050505050505050565b83838383604051806040016040528060188152602001771cd95d13195d995b15985b1a59185d1a5bdb94195c9a5bd960421b815250610fa1336107b6565b610fbd5760405162461bcd60e51b81526004016108719061186e565b6000610fcb86868686610eba565b90506001600160a01b0381163314801590610fea5750610fea816107b6565b8015610ffe57506001600160a01b03811615155b61101a5760405162461bcd60e51b8152600401610871906118a6565b6000808061102a888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156110645750845160208601206001600160e01b03198481169116145b6110805760405162461bcd60e51b8152600401610871906118de565b42811161109f5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790558d8d60808110156110ca57600080fd5b6001600160e01b03198235169160208101359160408201359190810190608081016060820135600160201b81111561110157600080fd5b82018360208201111561111357600080fd5b803590602001918460018302840111600160201b8311171561113457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451949b509950506020808b0198509296505050841015925061118b91505057600080fd5b505160058190556040805182815290519192507f41a00c7eee03e61d1b60dd43612931ec2f38759d03ecdd78c75a5f012000acbc919081900360200190a1505050505050505050505050505050565b600060066000815481106111ea57fe5b9060005260206000200154821015611204575060006107b1565b600660018154811061121257fe5b906000526020600020015482101561122c575060016107b1565b600660028154811061123a57fe5b9060005260206000200154821015611254575060026107b1565b600660038154811061126257fe5b906000526020600020015482101561127c575060036107b1565b600660048154811061128a57fe5b90600052602060002001548210156112a4575060046107b1565b506005919050565b600581565b60016020526000908152604090205460ff1681565b60036020526000908152604090205481565b838383836040518060400160405280601181526020017007472616e736665724f776e65727368697607c1b81525061130f336107b6565b61132b5760405162461bcd60e51b81526004016108719061186e565b600061133986868686610eba565b90506001600160a01b03811633148015906113585750611358816107b6565b801561136c57506001600160a01b03811615155b6113885760405162461bcd60e51b8152600401610871906118a6565b60008080611398888a018a6116ec565b50600082815260016020526040902054929550909350915060ff161580156113d25750845160208601206001600160e01b03198481169116145b6113ee5760405162461bcd60e51b8152600401610871906118de565b42811161140d5760405162461bcd60e51b81526004016108719061188a565b60008281526001602081905260408220805460ff191690911790556114348d8f018f6116ec565b935050505060008180602001905181019061144f91906116c5565b90506000805b60005481101561149d57336001600160a01b03166000828154811061147657fe5b6000918252602090912001546001600160a01b03161415611495578091505b600101611455565b5060008082815481106114ac57fe5b600091825260208220015481546001600160a01b039091169250849190849081106114d357fe5b6000918252602082200180546001600160a01b0319166001600160a01b03938416179055604051858316928416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050505050505050505050505050505050565b600061157983836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f7700000000008152506115b0565b9392505050565b600081604051602001611593919061181f565b604051602081830303815290604052805190602001209050919050565b600083830182858210156116425760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116075781810151838201526020016115ef565b50505050905090810190601f1680156116345780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50949350505050565b8280548282559060005260206000209081019282156116a0579160200282015b828111156116a057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061166b565b506116ac9291506116b0565b5090565b5b808211156116ac57600081556001016116b1565b6000602082840312156116d6578081fd5b81516001600160a01b0381168114611579578182fd5b60008060008060808587031215611701578283fd5b84356001600160e01b031981168114611718578384fd5b9350602085810135935060408601359250606086013567ffffffffffffffff80821115611743578384fd5b818801915088601f830112611756578384fd5b81358181111561176257fe5b604051601f8201601f191681018501838111828210171561177f57fe5b60405281815283820185018b1015611795578586fd5b81858501868301379081019093019390935250939692955090935050565b6000806000606084860312156117c7578283fd5b833560ff811681146117d7578384fd5b95602085013595506040909401359392505050565b60006bffffffffffffffffffffffff198660601b1682528460148301528284603484013791016034019081529392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b93845260ff9290921660208401526040830152606082015260800190565b60208082526002908201526137b760f11b604082015260600190565b602080825260029082015261065760f41b604082015260600190565b602080825260029082015261697360f01b604082015260600190565b602080825260029082015261616960f01b604082015260600190565b60208082526003908201526273727560e81b60408201526060019056fea164736f6c6343000706000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd
-----Decoded View---------------
Arg [0] : _cardContract (address): 0x08B1fC2B48e5871354AF138B7909E9d1a04A89DD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000008b1fc2b48e5871354af138b7909e9d1a04a89dd
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.