Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,135 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Pay055 | 12623865 | 1247 days ago | IN | 0 ETH | 0.00092929 | ||||
Pay055 | 8470370 | 1896 days ago | IN | 0 ETH | 0.00073015 | ||||
Pay055 | 8470294 | 1896 days ago | IN | 0 ETH | 0.00102176 | ||||
Pay055 | 8470267 | 1896 days ago | IN | 0 ETH | 0.00116824 | ||||
Pay055 | 8128443 | 1950 days ago | IN | 0 ETH | 0.00064253 | ||||
Pay055 | 8123881 | 1950 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7989806 | 1971 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7976529 | 1973 days ago | IN | 0 ETH | 0.00058412 | ||||
Pay055 | 7976494 | 1973 days ago | IN | 0 ETH | 0.00073015 | ||||
Pay055 | 7976463 | 1973 days ago | IN | 0 ETH | 0.00093459 | ||||
Pay055 | 7878723 | 1989 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7847133 | 1993 days ago | IN | 0 ETH | 0.00125586 | ||||
Pay055 | 7779112 | 2004 days ago | IN | 0 ETH | 0.00131427 | ||||
Pay055 | 7767152 | 2006 days ago | IN | 0 ETH | 0.0004965 | ||||
Pay055 | 7731236 | 2012 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7693470 | 2018 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7667581 | 2022 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7598093 | 2032 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7598007 | 2032 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7593325 | 2033 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7577332 | 2036 days ago | IN | 0 ETH | 0.00073015 | ||||
Pay055 | 7570216 | 2037 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7564548 | 2038 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7559962 | 2038 days ago | IN | 0 ETH | 0.00043809 | ||||
Pay055 | 7527266 | 2043 days ago | IN | 0 ETH | 0.00043809 |
Loading...
Loading
Contract Name:
Redenom
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-23 */ pragma solidity ^0.4.21; // Redenom 2.9.0023 // The GNU General Public License v3 // © Musqogees Tech 2018, Redenom ™ // -------------------- SAFE MATH ---------------------------------------------- library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } // ---------------------------------------------------------------------------- // Basic ERC20 functions // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Owned contract manages Owner and Admin rights. // Owner is Admin by default and can set other Admin // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; address internal admin; // modifier for Owner functions modifier onlyOwner { require(msg.sender == owner); _; } // modifier for Admin functions modifier onlyAdmin { require(msg.sender == admin || msg.sender == owner); _; } event OwnershipTransferred(address indexed _from, address indexed _to); event AdminChanged(address indexed _from, address indexed _to); // Constructor function Owned() public { owner = msg.sender; admin = msg.sender; } function setAdmin(address newAdmin) public onlyOwner{ emit AdminChanged(admin, newAdmin); admin = newAdmin; } function showAdmin() public view onlyAdmin returns(address _admin){ _admin = admin; return _admin; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // Borrowed from MiniMeToken // ---------------------------------------------------------------------------- contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes data) public; } contract Redenom is ERC20Interface, Owned{ using SafeMath for uint; //ERC20 params string public name; // ERC20 string public symbol; // ERC20 uint private _totalSupply; // ERC20 uint public decimals = 8; // ERC20 //Redenomination uint public round = 1; uint public epoch = 1; bool public frozen = false; //dec - sum of every exponent uint[8] private dec = [0,0,0,0,0,0,0,0]; //mul - internal used array for splitting numbers according to round uint[9] private mul = [1,10,100,1000,10000,100000,1000000,10000000,100000000]; //weight - internal used array (weights of every digit) uint[9] private weight = [uint(0),0,0,0,0,5,10,30,55]; //current_toadd - After redenominate() it holds an amount to add on each digit. uint[9] private current_toadd = [uint(0),0,0,0,0,0,0,0,0]; //Funds uint public total_fund; // All funds for 100 epochs 100 000 000 NOM uint public epoch_fund; // All funds for current epoch 100 000 NOM uint public team_fund; // Team Fund 10% of all funds paid uint public redenom_dao_fund; // DAO Fund 30% of all funds paid struct Account { uint balance; uint lastRound; // Last round dividens paid uint lastEpoch; // Last round dividens paid uint lastVotedBallotId; // Last ballot user voted uint bitmask; // 2 - got 0.55... for phone verif. // 4 - got 1 for KYC // 1024 - banned // // [2] [4] 8 16 32 64 128 256 512 [1024] ... - free to use } mapping(address=>Account) accounts; mapping(address => mapping(address => uint)) allowed; //Redenom special events event Redenomination(uint indexed round); event Epoch(uint indexed epoch); event VotingOn(uint indexed _ballotId); event VotingOff(uint indexed winner, uint indexed ballot_id); event Vote(address indexed voter, uint indexed propId, uint voterBalance, uint indexed curentBallotId); function Redenom() public { symbol = "NOM"; name = "Redenom"; _totalSupply = 0; // total NOM's in the game total_fund = 10000000 * 10**decimals; // 100 000 00.00000000, 1Mt epoch_fund = 100000 * 10**decimals; // 100 000.00000000, 100 Kt total_fund = total_fund.sub(epoch_fund); // Taking 100 Kt from total to epoch_fund } // New epoch can be started if: // - Current round is 9 // - Curen epoch < 10 function StartNewEpoch() public onlyAdmin returns(bool succ){ require(frozen == false); require(round == 9); require(epoch < 100); dec = [0,0,0,0,0,0,0,0]; round = 1; epoch++; epoch_fund = 100000 * 10**decimals; // 100 000.00000000, 100 Kt total_fund = total_fund.sub(epoch_fund); // Taking 100 Kt from total to epoch fund emit Epoch(epoch); return true; } ///////////////////////////////////////////B A L L O T//////////////////////////////////////////// //Is voting active? bool public votingActive = false; uint public curentBallotId = 0; uint public curentWinner; // Voter requirements: modifier onlyVoter { require(votingActive == true); require(bitmask_check(msg.sender, 4) == true); //passed KYC require(bitmask_check(msg.sender, 1024) == false); // banned == false require((accounts[msg.sender].lastVotedBallotId < curentBallotId)); _; } // This is a type for a single Project. struct Project { uint id; // Project id uint votesWeight; // total weight bool active; //active status. } Project[] public projects; struct Winner { uint id; uint projId; } Winner[] public winners; function addWinner(uint projId) internal { winners.push(Winner({ id: curentBallotId, projId: projId })); } function findWinner(uint _ballotId) public constant returns (uint winner){ for (uint p = 0; p < winners.length; p++) { if (winners[p].id == _ballotId) { return winners[p].projId; } } } // Add prop. with id: _id function addProject(uint _id) public onlyAdmin { require(votingActive == true); projects.push(Project({ id: _id, votesWeight: 0, active: true })); } // Turns project ON and OFF function swapProject(uint _id) public onlyAdmin { for (uint p = 0; p < projects.length; p++){ if(projects[p].id == _id){ if(projects[p].active == true){ projects[p].active = false; }else{ projects[p].active = true; } } } } // Returns proj. weight function projectWeight(uint _id) public constant returns(uint PW){ for (uint p = 0; p < projects.length; p++){ if(projects[p].id == _id){ return projects[p].votesWeight; } } } // Returns proj. status function projectActive(uint _id) public constant returns(bool PA){ for (uint p = 0; p < projects.length; p++){ if(projects[p].id == _id){ return projects[p].active; } } } // Vote for proj. using id: _id function vote(uint _id) public onlyVoter returns(bool success){ updateAccount(msg.sender); require(frozen == false); for (uint p = 0; p < projects.length; p++){ if(projects[p].id == _id && projects[p].active == true){ projects[p].votesWeight += sqrt(accounts[msg.sender].balance); accounts[msg.sender].lastVotedBallotId = curentBallotId; } } assert(accounts[msg.sender].lastVotedBallotId == curentBallotId); emit Vote(msg.sender, _id, accounts[msg.sender].balance, curentBallotId); return true; } // Shows currently winning proj function winningProject() public constant returns (uint _winningProject){ uint winningVoteWeight = 0; for (uint p = 0; p < projects.length; p++) { if (projects[p].votesWeight > winningVoteWeight && projects[p].active == true) { winningVoteWeight = projects[p].votesWeight; _winningProject = projects[p].id; } } } // Activates voting // Clears projects function enableVoting() public onlyAdmin returns(uint ballotId){ require(votingActive == false); require(frozen == false); curentBallotId++; votingActive = true; delete projects; emit VotingOn(curentBallotId); return curentBallotId; } // Deactivates voting function disableVoting() public onlyAdmin returns(uint winner){ require(votingActive == true); require(frozen == false); votingActive = false; curentWinner = winningProject(); addWinner(curentWinner); emit VotingOff(curentWinner, curentBallotId); return curentWinner; } // sqrt root func function sqrt(uint x) internal pure returns (uint y) { uint z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } ///////////////////////////////////////////B A L L O T//////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////// // NOM token emission functions /////////////////////////////////////////////////////////////////////////////////////////////////////// // Pays 1.00000000 from epoch_fund to KYC-passed user // Uses payout(), bitmask_check(), bitmask_add() // adds 4 to bitmask function pay1(address to) public onlyAdmin returns(bool success){ require(bitmask_check(to, 4) == false); uint new_amount = 100000000; payout(to,new_amount); bitmask_add(to, 4); return true; } // Pays .555666XX from epoch_fund to user approved phone; // Uses payout(), bitmask_check(), bitmask_add() // adds 2 to bitmask function pay055(address to) public onlyAdmin returns(bool success){ require(bitmask_check(to, 2) == false); uint new_amount = 55566600 + (block.timestamp%100); payout(to,new_amount); bitmask_add(to, 2); return true; } // Pays .555666XX from epoch_fund to KYC user in new epoch; // Uses payout(), bitmask_check(), bitmask_add() // adds 2 to bitmask function pay055loyal(address to) public onlyAdmin returns(bool success){ require(epoch > 1); require(bitmask_check(to, 4) == true); uint new_amount = 55566600 + (block.timestamp%100); payout(to,new_amount); return true; } // Pays random number from epoch_fund // Uses payout() function payCustom(address to, uint amount) public onlyOwner returns(bool success){ payout(to,amount); return true; } // Pays [amount] of money to [to] account from epoch_fund // Counts amount +30% +10% // Updating _totalSupply // Pays to balance and 2 funds // Refreshes dec[] // Emits event function payout(address to, uint amount) private returns (bool success){ require(to != address(0)); require(amount>=current_mul()); require(bitmask_check(to, 1024) == false); // banned == false require(frozen == false); //Update account balance updateAccount(to); //fix amount uint fixedAmount = fix_amount(amount); renewDec( accounts[to].balance, accounts[to].balance.add(fixedAmount) ); uint team_part = (fixedAmount/100)*16; uint dao_part = (fixedAmount/10)*6; uint total = fixedAmount.add(team_part).add(dao_part); epoch_fund = epoch_fund.sub(total); team_fund = team_fund.add(team_part); redenom_dao_fund = redenom_dao_fund.add(dao_part); accounts[to].balance = accounts[to].balance.add(fixedAmount); _totalSupply = _totalSupply.add(total); emit Transfer(address(0), to, fixedAmount); return true; } /////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////// // Withdraw amount from team_fund to given address function withdraw_team_fund(address to, uint amount) public onlyOwner returns(bool success){ require(amount <= team_fund); accounts[to].balance = accounts[to].balance.add(amount); team_fund = team_fund.sub(amount); return true; } // Withdraw amount from redenom_dao_fund to given address function withdraw_dao_fund(address to, uint amount) public onlyOwner returns(bool success){ require(amount <= redenom_dao_fund); accounts[to].balance = accounts[to].balance.add(amount); redenom_dao_fund = redenom_dao_fund.sub(amount); return true; } function freeze_contract() public onlyOwner returns(bool success){ require(frozen == false); frozen = true; return true; } function unfreeze_contract() public onlyOwner returns(bool success){ require(frozen == true); frozen = false; return true; } /////////////////////////////////////////////////////////////////////////////////////////////////////// // Run this on every change of user balance // Refreshes dec[] array // Takes initial and new ammount // while transaction must be called for each acc. function renewDec(uint initSum, uint newSum) internal returns(bool success){ if(round < 9){ uint tempInitSum = initSum; uint tempNewSum = newSum; uint cnt = 1; while( (tempNewSum > 0 || tempInitSum > 0) && cnt <= decimals ){ uint lastInitSum = tempInitSum%10; // 0.0000000 (0) tempInitSum = tempInitSum/10; // (0.0000000) 0 uint lastNewSum = tempNewSum%10; // 1.5556664 (5) tempNewSum = tempNewSum/10; // (1.5556664) 5 if(cnt >= round){ if(lastNewSum >= lastInitSum){ // If new is bigger dec[decimals-cnt] = dec[decimals-cnt].add(lastNewSum - lastInitSum); }else{ // If new is smaller dec[decimals-cnt] = dec[decimals-cnt].sub(lastInitSum - lastNewSum); } } cnt = cnt+1; } }//if(round < 9){ return true; } ////////////////////////////////////////// BITMASK ///////////////////////////////////////////////////// // Adding bit to bitmask // checks if already set function bitmask_add(address user, uint _bit) internal returns(bool success){ //todo privat? require(bitmask_check(user, _bit) == false); accounts[user].bitmask = accounts[user].bitmask.add(_bit); return true; } // Removes bit from bitmask // checks if already set function bitmask_rm(address user, uint _bit) internal returns(bool success){ require(bitmask_check(user, _bit) == true); accounts[user].bitmask = accounts[user].bitmask.sub(_bit); return true; } // Checks whether some bit is present in BM function bitmask_check(address user, uint _bit) public view returns (bool status){ bool flag; accounts[user].bitmask & _bit == 0 ? flag = false : flag = true; return flag; } /////////////////////////////////////////////////////////////////////////////////////////////////////// function ban_user(address user) public onlyAdmin returns(bool success){ bitmask_add(user, 1024); return true; } function unban_user(address user) public onlyAdmin returns(bool success){ bitmask_rm(user, 1024); return true; } function is_banned(address user) public view onlyAdmin returns (bool result){ return bitmask_check(user, 1024); } /////////////////////////////////////////////////////////////////////////////////////////////////////// //Redenominates function redenominate() public onlyAdmin returns(uint current_round){ require(frozen == false); require(round<9); // Round must be < 9 // Deleting funds rest from TS _totalSupply = _totalSupply.sub( team_fund%mul[round] ).sub( redenom_dao_fund%mul[round] ).sub( dec[8-round]*mul[round-1] ); // Redenominating 3 vars: _totalSupply team_fund redenom_dao_fund _totalSupply = ( _totalSupply / mul[round] ) * mul[round]; team_fund = ( team_fund / mul[round] ) * mul[round]; // Redenominates team_fund redenom_dao_fund = ( redenom_dao_fund / mul[round] ) * mul[round]; // Redenominates redenom_dao_fund if(round>1){ // decimals burned in last round and not distributed uint superold = dec[(8-round)+1]; // Returning them to epoch_fund epoch_fund = epoch_fund.add(superold * mul[round-2]); dec[(8-round)+1] = 0; } if(round<8){ // if round between 1 and 7 uint unclimed = dec[8-round]; // total sum of burned decimal //[23,32,43,34,34,54,34, ->46<- ] uint total_current = dec[8-1-round]; // total sum of last active decimal //[23,32,43,34,34,54, ->34<-, 46] // security check if(total_current==0){ current_toadd = [0,0,0,0,0,0,0,0,0]; round++; emit Redenomination(round); return round; } // Counting amounts to add on every digit uint[9] memory numbers =[uint(1),2,3,4,5,6,7,8,9]; // uint[9] memory ke9 =[uint(0),0,0,0,0,0,0,0,0]; // uint[9] memory k2e9 =[uint(0),0,0,0,0,0,0,0,0]; // uint k05summ = 0; for (uint k = 0; k < ke9.length; k++) { ke9[k] = numbers[k]*1e9/total_current; if(k<5) k05summ += ke9[k]; } for (uint k2 = 5; k2 < k2e9.length; k2++) { k2e9[k2] = uint(ke9[k2])+uint(k05summ)*uint(weight[k2])/uint(100); } for (uint n = 5; n < current_toadd.length; n++) { current_toadd[n] = k2e9[n]*unclimed/10/1e9; } // current_toadd now contains all digits }else{ if(round==8){ // Returns last burned decimals to epoch_fund epoch_fund = epoch_fund.add(dec[0] * 10000000); //1e7 dec[0] = 0; } } round++; emit Redenomination(round); return round; } function actual_balance(address user) public constant returns(uint _actual_balance){ if(epoch > 1 && accounts[user].lastEpoch < epoch){ return (accounts[user].balance/100000000)*100000000; } return (accounts[user].balance/current_mul())*current_mul(); } // Refresh user acc // Pays dividends if any function updateAccount(address account) public returns(uint new_balance){ require(frozen == false); require(round<=9); require(bitmask_check(account, 1024) == false); // banned == false if(epoch > 1 && accounts[account].lastEpoch < epoch){ uint entire = accounts[account].balance/100000000; //1. //uint diff_ = accounts[account].balance - entire*100000000; if((accounts[account].balance - entire*100000000) >0){ emit Transfer(account, address(0), (accounts[account].balance - entire*100000000)); } accounts[account].balance = entire*100000000; accounts[account].lastEpoch = epoch; accounts[account].lastRound = round; return accounts[account].balance; } if(round > accounts[account].lastRound){ if(round >1 && round <=8){ // Splits user bal by current multiplier uint tempDividedBalance = accounts[account].balance/current_mul(); // [1.5556663] 4 (r2) uint newFixedBalance = tempDividedBalance*current_mul(); // [1.55566630] (r2) uint lastActiveDigit = tempDividedBalance%10; // 1.555666 [3] 4 (r2) uint diff = accounts[account].balance - newFixedBalance; // 1.5556663 [4] (r2) if(diff > 0){ accounts[account].balance = newFixedBalance; emit Transfer(account, address(0), diff); } uint toBalance = 0; if(lastActiveDigit>0 && current_toadd[lastActiveDigit-1]>0){ toBalance = current_toadd[lastActiveDigit-1] * current_mul(); } if(toBalance > 0 && toBalance < dec[8-round+1]){ // Not enough renewDec( accounts[account].balance, accounts[account].balance.add(toBalance) ); emit Transfer(address(0), account, toBalance); // Refreshing dec arr accounts[account].balance = accounts[account].balance.add(toBalance); // Adding to ball dec[8-round+1] = dec[8-round+1].sub(toBalance); // Taking from burned decimal _totalSupply = _totalSupply.add(toBalance); // Add dividend to _totalSupply } accounts[account].lastRound = round; // Writting last round in wich user got dividends if(accounts[account].lastEpoch != epoch){ accounts[account].lastEpoch = epoch; } return accounts[account].balance; // returns new balance }else{ if( round == 9){ //100000000 = 9 mul (mul8) uint newBalance = fix_amount(accounts[account].balance); uint _diff = accounts[account].balance.sub(newBalance); if(_diff > 0){ renewDec( accounts[account].balance, newBalance ); accounts[account].balance = newBalance; emit Transfer(account, address(0), _diff); } accounts[account].lastRound = round; // Writting last round in wich user got dividends if(accounts[account].lastEpoch != epoch){ accounts[account].lastEpoch = epoch; } return accounts[account].balance; // returns new balance } } } } // Returns current multipl. based on round // Returns current multiplier based on round function current_mul() internal view returns(uint _current_mul){ return mul[round-1]; } // Removes burned values 123 -> 120 // Returns fixed function fix_amount(uint amount) public view returns(uint fixed_amount){ return ( amount / current_mul() ) * current_mul(); } // Returns rest function get_rest(uint amount) internal view returns(uint fixed_amount){ return amount % current_mul(); } // ------------------------------------------------------------------------ // ERC20 totalSupply: //------------------------------------------------------------------------- function totalSupply() public view returns (uint) { return _totalSupply; } // ------------------------------------------------------------------------ // ERC20 balanceOf: Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public constant returns (uint balance) { return accounts[tokenOwner].balance; } // ------------------------------------------------------------------------ // ERC20 allowance: // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public constant returns (uint remaining) { return allowed[tokenOwner][spender]; } // ------------------------------------------------------------------------ // ERC20 transfer: // Transfer the balance from token owner's account to `to` account // - Owner's account must have sufficient balance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transfer(address to, uint tokens) public returns (bool success) { require(frozen == false); require(to != address(0)); require(bitmask_check(to, 1024) == false); // banned == false //Fixing amount, deleting burned decimals tokens = fix_amount(tokens); // Checking if greater then 0 require(tokens>0); //Refreshing accs, payng dividends updateAccount(to); updateAccount(msg.sender); uint fromOldBal = accounts[msg.sender].balance; uint toOldBal = accounts[to].balance; accounts[msg.sender].balance = accounts[msg.sender].balance.sub(tokens); accounts[to].balance = accounts[to].balance.add(tokens); require(renewDec(fromOldBal, accounts[msg.sender].balance)); require(renewDec(toOldBal, accounts[to].balance)); emit Transfer(msg.sender, to, tokens); return true; } // ------------------------------------------------------------------------ // ERC20 approve: // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // recommends that there are no checks for the approval double-spend attack // as this should be implemented in user interfaces // ------------------------------------------------------------------------ function approve(address spender, uint tokens) public returns (bool success) { require(frozen == false); require(bitmask_check(msg.sender, 1024) == false); // banned == false allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } // ------------------------------------------------------------------------ // ERC20 transferFrom: // Transfer `tokens` from the `from` account to the `to` account // The calling account must already have sufficient tokens approve(...)-d // for spending from the `from` account and // - From account must have sufficient balance to transfer // - Spender must have sufficient allowance to transfer // - 0 value transfers are allowed // ------------------------------------------------------------------------ function transferFrom(address from, address to, uint tokens) public returns (bool success) { require(frozen == false); require(bitmask_check(to, 1024) == false); // banned == false updateAccount(from); updateAccount(to); uint fromOldBal = accounts[from].balance; uint toOldBal = accounts[to].balance; accounts[from].balance = accounts[from].balance.sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); accounts[to].balance = accounts[to].balance.add(tokens); require(renewDec(fromOldBal, accounts[from].balance)); require(renewDec(toOldBal, accounts[to].balance)); emit Transfer(from, to, tokens); return true; } // ------------------------------------------------------------------------ // Token owner can approve for `spender` to transferFrom(...) `tokens` // from the token owner's account. The `spender` contract function // `receiveApproval(...)` is then executed // ------------------------------------------------------------------------ function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) { require(frozen == false); require(bitmask_check(msg.sender, 1024) == false); // banned == false allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data); return true; } // ------------------------------------------------------------------------ // Don't accept ETH https://github.com/ConsenSys/Ethereum-Development-Best-Practices/wiki/Fallback-functions-and-the-fundamental-limitations-of-using-send()-in-Ethereum-&-Solidity // ------------------------------------------------------------------------ function () public payable { revert(); } // OR function() payable { } to accept ETH // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { require(frozen == false); return ERC20Interface(tokenAddress).transfer(owner, tokens); } } // © Musqogees Tech 2018, Redenom ™
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"vote","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableVoting","outputs":[{"name":"winner","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"frozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ballotId","type":"uint256"}],"name":"findWinner","outputs":[{"name":"winner","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"payCustom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"pay1","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"ban_user","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"projects","outputs":[{"name":"id","type":"uint256"},{"name":"votesWeight","type":"uint256"},{"name":"active","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"round","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epoch_fund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"pay055loyal","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"team_fund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"curentWinner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"updateAccount","outputs":[{"name":"new_balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"freeze_contract","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"showAdmin","outputs":[{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"redenom_dao_fund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"addProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"StartNewEpoch","outputs":[{"name":"succ","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"pay055","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdraw_team_fund","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"fix_amount","outputs":[{"name":"fixed_amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epoch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"winningProject","outputs":[{"name":"_winningProject","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":"user","type":"address"},{"name":"_bit","type":"uint256"}],"name":"bitmask_check","outputs":[{"name":"status","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_fund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdraw_dao_fund","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"winners","outputs":[{"name":"id","type":"uint256"},{"name":"projId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"}],"name":"unban_user","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"is_banned","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"redenominate","outputs":[{"name":"current_round","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze_contract","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"projectActive","outputs":[{"name":"PA","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"actual_balance","outputs":[{"name":"_actual_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"swapProject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"curentBallotId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableVoting","outputs":[{"name":"ballotId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"projectWeight","outputs":[{"name":"PW","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"round","type":"uint256"}],"name":"Redenomination","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"epoch","type":"uint256"}],"name":"Epoch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_ballotId","type":"uint256"}],"name":"VotingOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"winner","type":"uint256"},{"indexed":true,"name":"ballot_id","type":"uint256"}],"name":"VotingOff","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"voter","type":"address"},{"indexed":true,"name":"propId","type":"uint256"},{"indexed":false,"name":"voterBalance","type":"uint256"},{"indexed":true,"name":"curentBallotId","type":"uint256"}],"name":"Vote","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
600860068190556001600781905581556009805460ff191690556101806040526000608081815260a082905260c082905260e0829052610100829052610120829052610140829052610160919091526200005d91600a9190620002a6565b50604080516101208101825260018152600a60208201526064918101919091526103e860608201526127106080820152620186a060a0820152620f424060c08201526298968060e08201526305f5e100610100820152620000c3906012906009620002ee565b5061012060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160058152602001600a8152602001601e81526020016037815250601b9060096200012092919062000327565b50610120604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525060249060096200017d92919062000327565b506033805460ff1916905560006034553480156200019a57600080fd5b506000805433600160a060020a031991821681179092556002805490911690911790556040805180820190915260038082527f4e4f4d00000000000000000000000000000000000000000000000000000000006020909201918252620002039160049162000358565b506040805180820190915260078082527f526564656e6f6d0000000000000000000000000000000000000000000000000060209092019182526200024a9160039162000358565b506000600555600654600a0a629896808102602d819055620186a0909102602e81905562000287919064010000000062000290810262002d251704565b602d55620003ea565b600082821115620002a057600080fd5b50900390565b8260088101928215620002dc579160200282015b82811115620002dc578251829060ff16905591602001919060010190620002ba565b50620002ea929150620003ca565b5090565b8260098101928215620002dc579160200282015b82811115620002dc578251829063ffffffff1690559160200191906001019062000302565b8260098101928215620002dc579160200282015b82811115620002dc5782518255916020019190600101906200033b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039b57805160ff1916838001178555620002dc565b82800160010185558215620002dc5791820182811115620002dc5782518255916020019190600101906200033b565b620003e791905b80821115620002ea5760008155600101620003d1565b90565b612fd980620003fa6000396000f3006080604052600436106102925763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630121b93f811461029757806304cd1819146102c3578063054f7d9c146102ea57806305e49d1d146102ff57806306ec62721461031757806306fdde031461033b57806307ba217c146103c5578063095ea7b3146103e65780630fccf22e1461040a578063107046bd1461042b578063146ca5311461046357806318160ddd146104785780631a7b11f51461048d5780631d2af28b146104a257806323b872dd146104c3578063251b5f8e146104ed57806325a52d9d146105025780632ce3d44014610517578063313ce56714610538578063408e27271461054d57806341c41923146105625780634f0e86561461057757806351651003146105a857806357183698146105bd5780636584ceb0146105d7578063704b6c02146105ec57806370a082311461060d57806379ba50971461062e5780638c90b2ea146106435780638da5cb5b146106645780638f46b586146106795780638f87932c1461069d578063900cf0cf146106b5578063946bf4d7146106ca57806395d89b41146106df5780639cba60a7146106f4578063a17b229d14610718578063a24e20de1461072d578063a2fb117514610751578063a7e1b51614610782578063a9059cbb146107a3578063b3adc716146107c7578063c091e45a146107e8578063c450a25f146107fd578063cae9ca5114610812578063cf504d481461087b578063d4ee1d9014610893578063dc39d06d146108a8578063dd62ed3e146108cc578063de78ed85146108f3578063dfa0ca1414610914578063e4eacd701461092c578063eb4439fb14610941578063f2fde38b14610956578063f37e741e14610977575b600080fd5b3480156102a357600080fd5b506102af60043561098f565b604080519115158252519081900360200190f35b3480156102cf57600080fd5b506102d8610b49565b60408051918252519081900360200190f35b3480156102f657600080fd5b506102af610bf5565b34801561030b57600080fd5b506102d8600435610bfe565b34801561032357600080fd5b506102af600160a060020a0360043516602435610c63565b34801561034757600080fd5b50610350610c91565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038a578181015183820152602001610372565b50505050905090810190601f1680156103b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d157600080fd5b506102af600160a060020a0360043516610d1f565b3480156103f257600080fd5b506102af600160a060020a0360043516602435610d8d565b34801561041657600080fd5b506102af600160a060020a0360043516610e1d565b34801561043757600080fd5b50610443600435610e65565b604080519384526020840192909252151582820152519081900360600190f35b34801561046f57600080fd5b506102d8610e99565b34801561048457600080fd5b506102d8610e9f565b34801561049957600080fd5b506102d8610ea5565b3480156104ae57600080fd5b506102af600160a060020a0360043516610eab565b3480156104cf57600080fd5b506102af600160a060020a0360043581169060243516604435610f1b565b3480156104f957600080fd5b506102d86110c4565b34801561050e57600080fd5b506102d86110ca565b34801561052357600080fd5b506102d8600160a060020a03600435166110d0565b34801561054457600080fd5b506102d86115fa565b34801561055957600080fd5b506102af611600565b34801561056e57600080fd5b506102af611609565b34801561058357600080fd5b5061058c611645565b60408051600160a060020a039092168252519081900360200190f35b3480156105b457600080fd5b506102d8611686565b3480156105c957600080fd5b506105d560043561168c565b005b3480156105e357600080fd5b506102af611781565b3480156105f857600080fd5b506105d5600160a060020a0360043516611891565b34801561061957600080fd5b506102d8600160a060020a0360043516611911565b34801561063a57600080fd5b506105d561192c565b34801561064f57600080fd5b506102af600160a060020a03600435166119b4565b34801561067057600080fd5b5061058c611a1d565b34801561068557600080fd5b506102af600160a060020a0360043516602435611a2c565b3480156106a957600080fd5b506102d8600435611ab4565b3480156106c157600080fd5b506102d8611ad8565b3480156106d657600080fd5b506102d8611ade565b3480156106eb57600080fd5b50610350611b9a565b34801561070057600080fd5b506102af600160a060020a0360043516602435611bf5565b34801561072457600080fd5b506102d8611c30565b34801561073957600080fd5b506102af600160a060020a0360043516602435611c36565b34801561075d57600080fd5b50610769600435611cbe565b6040805192835260208301919091528051918290030190f35b34801561078e57600080fd5b506102af600160a060020a0360043516611cea565b3480156107af57600080fd5b506102af600160a060020a0360043516602435611d27565b3480156107d357600080fd5b506102af600160a060020a0360043516611e9f565b3480156107f457600080fd5b506102d8611edc565b34801561080957600080fd5b506102af61243e565b34801561081e57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102af948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061247a9650505050505050565b34801561088757600080fd5b506102af600435612605565b34801561089f57600080fd5b5061058c61266f565b3480156108b457600080fd5b506102af600160a060020a036004351660243561267e565b3480156108d857600080fd5b506102d8600160a060020a0360043581169060243516612749565b3480156108ff57600080fd5b506102d8600160a060020a0360043516612774565b34801561092057600080fd5b506105d5600435612808565b34801561093857600080fd5b506102d8612916565b34801561094d57600080fd5b506102d861291c565b34801561096257600080fd5b506105d5600160a060020a03600435166129c5565b34801561098357600080fd5b506102d8600435612a0b565b603354600090819060ff1615156001146109a857600080fd5b6109b3336004611bf5565b15156001146109c157600080fd5b6109cd33610400611bf5565b156109d757600080fd5b60345433600090815260316020526040902060030154106109f757600080fd5b610a00336110d0565b5060095460ff1615610a1157600080fd5b5060005b603654811015610ad75782603682815481101515610a2f57fe5b906000526020600020906003020160000154148015610a7457506036805482908110610a5757fe5b600091825260209091206002600390920201015460ff1615156001145b15610acf5733600090815260316020526040902054610a9290612a70565b6036805483908110610aa057fe5b600091825260208083206003928302016001018054949094019093556034543383526031909352604090912001555b600101610a15565b6034543360009081526031602052604090206003015414610af457fe5b6034543360008181526031602090815260409182902054825190815291518793927f6c7eb2743ec28489909706ea440d909129004996be657d36c6e9add778546abf92908290030190a4600191505b50919050565b600254600090600160a060020a0316331480610b6f5750600054600160a060020a031633145b1515610b7a57600080fd5b60335460ff161515600114610b8e57600080fd5b60095460ff1615610b9e57600080fd5b6033805460ff19169055610bb0611ade565b6035819055610bbe90612aa5565b6034546035546040517f857b4631e7ebad75ee4937e2bfb5ca31eb4a27140ec7aac09984ef81a326776b90600090a3506035545b90565b60095460ff1681565b6000805b603754811015610b435782603782815481101515610c1c57fe5b9060005260206000209060020201600001541415610c5b576037805482908110610c4257fe5b9060005260206000209060020201600101549150610b43565b600101610c02565b60008054600160a060020a03163314610c7b57600080fd5b610c858383612b20565b50600190505b92915050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b505050505081565b6002546000908190600160a060020a0316331480610d475750600054600160a060020a031633145b1515610d5257600080fd5b610d5d836004611bf5565b15610d6757600080fd5b506305f5e100610d778382612b20565b50610d83836004612cbe565b5060019392505050565b60095460009060ff1615610da057600080fd5b610dac33610400611bf5565b15610db657600080fd5b336000818152603260209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600254600090600160a060020a0316331480610e435750600054600160a060020a031633145b1515610e4e57600080fd5b610e5a82610400612cbe565b50600190505b919050565b6036805482908110610e7357fe5b600091825260209091206003909102018054600182015460029092015490925060ff1683565b60075481565b60055490565b602e5481565b6002546000908190600160a060020a0316331480610ed35750600054600160a060020a031633145b1515610ede57600080fd5b600854600110610eed57600080fd5b610ef8836004611bf5565b1515600114610f0657600080fd5b5063034fe1086064420601610d838382612b20565b6009546000908190819060ff1615610f3257600080fd5b610f3e85610400611bf5565b15610f4857600080fd5b610f51866110d0565b50610f5b856110d0565b505050600160a060020a03808516600081815260316020526040808220549387168252812054919052610f94828563ffffffff612d2516565b600160a060020a0387166000908152603160209081526040808320939093556032815282822033835290522054610fd1908563ffffffff612d2516565b600160a060020a038088166000908152603260209081526040808320338452825280832094909455918816815260319091522054611015908563ffffffff612d3a16565b600160a060020a038087166000908152603160205260408082209390935590881681522054611045908390612d4a565b151561105057600080fd5b600160a060020a038516600090815260316020526040902054611074908290612d4a565b151561107f57600080fd5b84600160a060020a031686600160a060020a0316600080516020612f8e833981519152866040518082815260200191505060405180910390a350600195945050505050565b602f5481565b60355481565b6009546000908190819081908190819081908190819060ff16156110f357600080fd5b6007546009101561110357600080fd5b61110f8a610400611bf5565b1561111957600080fd5b60016008541180156111475750600854600160a060020a038b16600090815260316020526040902060020154105b156111ff57600160a060020a038a166000908152603160205260408120546305f5e1008082049a508a02900311156111c257600160a060020a038a1660008181526031602090815260408083205481516305f5e1008e0290910381529051929392600080516020612f8e833981519152929181900390910190a35b600160a060020a038a1660009081526031602052604090206305f5e1008902808255600854600283015560075460019092019190915598506115ed565b600160a060020a038a1660009081526031602052604090206001015460075411156115ed5760016007541180156112395750600860075411155b156114cc57611246612e2b565b600160a060020a038b1660009081526031602052604090205481151561126857fe5b049650611273612e2b565b600160a060020a038b166000908152603160205260408120549189029750600a890696509087900394508411156112e657600160a060020a038a1660008181526031602090815260408083208a905580518881529051929392600080516020612f8e833981519152929181900390910190a35b6000925060008511801561130c57506000602460001987016009811061130857fe5b0154115b1561133057611319612e2b565b602460001987016009811061132a57fe5b01540292505b6000831180156113575750600a60075460080360010160088110151561135257fe5b015483105b1561145b57600160a060020a038a1660009081526031602052604090205461138e90611389818663ffffffff612d3a16565b612d4a565b50604080518481529051600160a060020a038c1691600091600080516020612f8e8339815191529181900360200190a3600160a060020a038a166000908152603160205260409020546113e7908463ffffffff612d3a16565b600160a060020a038b1660009081526031602052604090205560075461142b908490600a90600160089182030190811061141d57fe5b01549063ffffffff612d2516565b600a60075460080360010160088110151561144257fe5b0155600554611457908463ffffffff612d3a16565b6005555b600754600160a060020a038b1660009081526031602052604090206001810191909155600854600290910154146114ac57600854600160a060020a038b166000908152603160205260409020600201555b600160a060020a038a1660009081526031602052604090205498506115ed565b600754600914156115ed57600160a060020a038a166000908152603160205260409020546114f990611ab4565b600160a060020a038b16600090815260316020526040902054909250611525908363ffffffff612d2516565b9050600081111561145b57600160a060020a038a166000908152603160205260409020546115539083612d4a565b50600160a060020a038a16600081815260316020908152604080832086905580518581529051929392600080516020612f8e833981519152929181900390910190a3600754600160a060020a038b1660009081526031602052604090206001810191909155600854600290910154146114ac57600854600160a060020a038b16600090815260316020526040902060028101919091555498505b5050505050505050919050565b60065481565b60335460ff1681565b60008054600160a060020a0316331461162157600080fd5b60095460ff161561163157600080fd5b506009805460ff1916600190811790915590565b600254600090600160a060020a031633148061166b5750600054600160a060020a031633145b151561167657600080fd5b50600254600160a060020a031690565b60305481565b600254600160a060020a03163314806116af5750600054600160a060020a031633145b15156116ba57600080fd5b60335460ff1615156001146116ce57600080fd5b60408051606081018252918252600060208301818152600192840183815260368054948501815590925292517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b860039093029283015591517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b982015590517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81ba909101805460ff1916911515919091179055565b600254600090600160a060020a03163314806117a75750600054600160a060020a031633145b15156117b257600080fd5b60095460ff16156117c257600080fd5b6007546009146117d157600080fd5b6008546064116117e057600080fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261182f90600a906008612e8e565b5060016007819055600880549091019055600654600a0a620186a002602e819055602d5461185c91612d25565b602d556008546040517fc1d4931e10652da8ab23604510531810d2eebfcd33a81ba4946d702ce8057b6490600090a250600190565b600054600160a060020a031633146118a857600080fd5b600254604051600160a060020a038084169216907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f90600090a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526031602052604090205490565b600154600160a060020a0316331461194357600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002546000908190600160a060020a03163314806119dc5750600054600160a060020a031633145b15156119e757600080fd5b6119f2836002611bf5565b156119fc57600080fd5b5063034fe1086064420601611a118382612b20565b50610d83836002612cbe565b600054600160a060020a031681565b60008054600160a060020a03163314611a4457600080fd5b602f54821115611a5357600080fd5b600160a060020a038316600090815260316020526040902054611a7c908363ffffffff612d3a16565b600160a060020a038416600090815260316020526040902055602f54611aa8908363ffffffff612d2516565b602f5550600192915050565b6000611abe612e2b565b611ac6612e2b565b83811515611ad057fe5b040292915050565b60085481565b600080805b603654811015611b955781603682815481101515611afd57fe5b906000526020600020906003020160010154118015611b4257506036805482908110611b2557fe5b600091825260209091206002600390920201015460ff1615156001145b15611b8d576036805482908110611b5557fe5b9060005260206000209060030201600101549150603681815481101515611b7857fe5b90600052602060002090600302016000015492505b600101611ae3565b505090565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d175780601f10610cec57610100808354040283529160200191610d17565b600160a060020a0382166000908152603160205260408120600401548190831615611c235750600180611c28565b506000805b509392505050565b602d5481565b60008054600160a060020a03163314611c4e57600080fd5b603054821115611c5d57600080fd5b600160a060020a038316600090815260316020526040902054611c86908363ffffffff612d3a16565b600160a060020a038416600090815260316020526040902055603054611cb2908363ffffffff612d2516565b60305550600192915050565b6037805482908110611ccc57fe5b60009182526020909120600290910201805460019091015490915082565b600254600090600160a060020a0316331480611d105750600054600160a060020a031633145b1515611d1b57600080fd5b610e5a82610400612e48565b6009546000908190819060ff1615611d3e57600080fd5b600160a060020a0385161515611d5357600080fd5b611d5f85610400611bf5565b15611d6957600080fd5b611d7284611ab4565b935060008411611d8157600080fd5b611d8a856110d0565b50611d94336110d0565b50503360008181526031602052604080822054600160a060020a038816835290822054929091529150611dcd828563ffffffff612d2516565b3360009081526031602052604080822092909255600160a060020a03871681522054611dff908563ffffffff612d3a16565b600160a060020a038616600090815260316020526040808220929092553381522054611e2c908390612d4a565b1515611e3757600080fd5b600160a060020a038516600090815260316020526040902054611e5b908290612d4a565b1515611e6657600080fd5b604080518581529051600160a060020a038716913391600080516020612f8e8339815191529181900360200190a3506001949350505050565b600254600090600160a060020a0316331480611ec55750600054600160a060020a031633145b1515611ed057600080fd5b610c8b82610400611bf5565b600080600080611eea612ed1565b611ef2612ed1565b611efa612ed1565b600254600090819081908190600160a060020a0316331480611f265750600054600160a060020a031633145b1515611f3157600080fd5b60095460ff1615611f4157600080fd5b600754600911611f5057600080fd5b611fe26012600160075403600981101515611f6757fe5b0154600a600754600803600881101515611f7d57fe5b015402611fd66012600754600981101515611f9457fe5b0154603054811515611fa257fe5b06611fd66012600754600981101515611fb757fe5b0154602f54811515611fc557fe5b60055491900663ffffffff612d2516565b9063ffffffff612d2516565b60055560075460129060098110611ff557fe5b01546007546012906009811061200757fe5b015460055481151561201557fe5b04026005556007546012906009811061202a57fe5b01546007546012906009811061203c57fe5b0154602f5481151561204a57fe5b0402602f556007546012906009811061205f57fe5b01546007546012906009811061207157fe5b015460305481151561207f57fe5b0402603055600754600110156120f457600a6007546008036001016008811015156120a657fe5b015499506120d460126002600754036009811015156120c157fe5b0154602e54908c0263ffffffff612d3a16565b602e55600754600090600a9060016008918203019081106120f157fe5b01555b600860075410156123cf57600a60075460080360088110151561211357fe5b01549850600a60075460070360088110151561212b57fe5b015497508715156121cc576040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915261218d906024906009612ef1565b5060078054600101908190556040517f3c328c5db5168fd903728d91e7aede758575035688b483d468dedb7a95aeb5af90600090a26007549a50612431565b61012060405190810160405280600181526020016002815260200160038152602001600481526020016005815260200160068152602001600781526020016008815260200160098152509650610120604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525095506101206040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250945060009350600092505b600983101561231f57878784600981106122cf57fe5b6020020151633b9aca00028115156122e357fe5b048684600981106122f057fe5b602002015260058310156123145785836009811061230a57fe5b6020020151840193505b6001909201916122b9565b600591505b6009821015612378576064601b836009811061233c57fe5b0154850281151561234957fe5b0486836009811061235657fe5b60200201510185836009811061236857fe5b6020020152600190910190612324565b5060055b60098110156123ca57633b9aca00600a8a87846009811061239957fe5b6020020151028115156123a857fe5b048115156123b257fe5b04602482600981106123c057fe5b015560010161237c565b6123f7565b600754600814156123f757600a54602e546123ee916298968002612d3a565b602e556000600a555b60078054600101908190556040517f3c328c5db5168fd903728d91e7aede758575035688b483d468dedb7a95aeb5af90600090a26007549a505b5050505050505050505090565b60008054600160a060020a0316331461245657600080fd5b60095460ff16151560011461246a57600080fd5b506009805460ff19169055600190565b60095460009060ff161561248d57600080fd5b61249933610400611bf5565b156124a357600080fd5b336000818152603260209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a36040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561259457818101518382015260200161257c565b50505050905090810190601f1680156125c15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b506001979650505050505050565b6000805b603654811015610b43578260368281548110151561262357fe5b906000526020600020906003020160000154141561266757603680548290811061264957fe5b600091825260209091206002600390920201015460ff169150610b43565b600101612609565b600154600160a060020a031681565b60008054600160a060020a0316331461269657600080fd5b60095460ff16156126a657600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d602081101561274057600080fd5b50519392505050565b600160a060020a03918216600090815260326020908152604080832093909416825291909152205490565b600060016008541180156127a45750600854600160a060020a038316600090815260316020526040902060020154105b156127d657600160a060020a0382166000908152603160205260409020546305f5e10090046305f5e100029050610e60565b6127de612e2b565b6127e6612e2b565b600160a060020a038416600090815260316020526040902054811515611ad057fe5b600254600090600160a060020a031633148061282e5750600054600160a060020a031633145b151561283957600080fd5b5060005b603654811015612912578160368281548110151561285757fe5b906000526020600020906003020160000154141561290a57603680548290811061287d57fe5b600091825260209091206002600390920201015460ff161515600114156128d65760006036828154811015156128af57fe5b60009182526020909120600390910201600201805460ff191691151591909117905561290a565b60016036828154811015156128e757fe5b60009182526020909120600390910201600201805460ff19169115159190911790555b60010161283d565b5050565b60345481565b600254600090600160a060020a03163314806129425750600054600160a060020a031633145b151561294d57600080fd5b60335460ff161561295d57600080fd5b60095460ff161561296d57600080fd5b6034805460019081019091556033805460ff1916909117905561299260366000612f23565b6034546040517f3e5d02a8c38e7fed83b839f2339ef5d1a13c79b9cb4142f9216e27a0f32bc39990600090a25060345490565b600054600160a060020a031633146129dc57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805b603654811015610b435782603682815481101515612a2957fe5b9060005260206000209060030201600001541415612a68576036805482908110612a4f57fe5b9060005260206000209060030201600101549150610b43565b600101612a0f565b80600260018201045b81811015610b43578091506002818285811515612a9257fe5b0401811515612a9d57fe5b049050612a79565b604080518082019091526034548152602081019182526037805460018101825560009190915290517f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae60029092029182015590517f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31af90910155565b600080808080600160a060020a0387161515612b3b57600080fd5b612b43612e2b565b861015612b4f57600080fd5b612b5b87610400611bf5565b15612b6557600080fd5b60095460ff1615612b7557600080fd5b612b7e876110d0565b50612b8886611ab4565b600160a060020a038816600090815260316020526040902054909450612bb890611389818763ffffffff612d3a16565b50606484046010029250600a84046006029150612be582612bd98686612d3a565b9063ffffffff612d3a16565b602e54909150612bfb908263ffffffff612d2516565b602e55602f54612c11908463ffffffff612d3a16565b602f55603054612c27908363ffffffff612d3a16565b603055600160a060020a038716600090815260316020526040902054612c53908563ffffffff612d3a16565b600160a060020a038816600090815260316020526040902055600554612c7f908263ffffffff612d3a16565b600555604080518581529051600160a060020a03891691600091600080516020612f8e8339815191529181900360200190a35060019695505050505050565b6000612cca8383611bf5565b15612cd457600080fd5b600160a060020a038316600090815260316020526040902060040154612d00908363ffffffff612d3a16565b600160a060020a03841660009081526031602052604090206004015550600192915050565b600082821115612d3457600080fd5b50900390565b81810182811015610c8b57600080fd5b600080600080600080600960075410156125f757879450869350600192505b6000841180612d785750600085115b8015612d8657506006548311155b156125f7575050600754600a80850494818504949082900692919006908310612e2057818110612df157612dd7828203600a8560065403600881101515612dc957fe5b01549063ffffffff612d3a16565b600a8460065403600881101515612dea57fe5b0155612e20565b612e0a818303600a856006540360088110151561141d57fe5b600a8460065403600881101515612e1d57fe5b01555b826001019250612d69565b60006012600160075403600981101515612e4157fe5b0154905090565b6000612e548383611bf5565b1515600114612e6257600080fd5b600160a060020a038316600090815260316020526040902060040154612d00908363ffffffff612d2516565b8260088101928215612ec1579160200282015b82811115612ec1578251829060ff16905591602001919060010190612ea1565b50612ecd929150612f47565b5090565b610120604051908101604052806009906020820280388339509192915050565b8260098101928215612ec15791602002820182811115612ec1578251829060ff16905591602001919060010190612ea1565b5080546000825560030290600052602060002090810190612f449190612f61565b50565b610bf291905b80821115612ecd5760008155600101612f4d565b610bf291905b80821115612ecd576000808255600182015560028101805460ff19169055600301612f675600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820970f285f47a7ec334ce0db67908f35b10c08d1a6b90ab675f5bbae3c63b6151e0029
Deployed Bytecode
0x6080604052600436106102925763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630121b93f811461029757806304cd1819146102c3578063054f7d9c146102ea57806305e49d1d146102ff57806306ec62721461031757806306fdde031461033b57806307ba217c146103c5578063095ea7b3146103e65780630fccf22e1461040a578063107046bd1461042b578063146ca5311461046357806318160ddd146104785780631a7b11f51461048d5780631d2af28b146104a257806323b872dd146104c3578063251b5f8e146104ed57806325a52d9d146105025780632ce3d44014610517578063313ce56714610538578063408e27271461054d57806341c41923146105625780634f0e86561461057757806351651003146105a857806357183698146105bd5780636584ceb0146105d7578063704b6c02146105ec57806370a082311461060d57806379ba50971461062e5780638c90b2ea146106435780638da5cb5b146106645780638f46b586146106795780638f87932c1461069d578063900cf0cf146106b5578063946bf4d7146106ca57806395d89b41146106df5780639cba60a7146106f4578063a17b229d14610718578063a24e20de1461072d578063a2fb117514610751578063a7e1b51614610782578063a9059cbb146107a3578063b3adc716146107c7578063c091e45a146107e8578063c450a25f146107fd578063cae9ca5114610812578063cf504d481461087b578063d4ee1d9014610893578063dc39d06d146108a8578063dd62ed3e146108cc578063de78ed85146108f3578063dfa0ca1414610914578063e4eacd701461092c578063eb4439fb14610941578063f2fde38b14610956578063f37e741e14610977575b600080fd5b3480156102a357600080fd5b506102af60043561098f565b604080519115158252519081900360200190f35b3480156102cf57600080fd5b506102d8610b49565b60408051918252519081900360200190f35b3480156102f657600080fd5b506102af610bf5565b34801561030b57600080fd5b506102d8600435610bfe565b34801561032357600080fd5b506102af600160a060020a0360043516602435610c63565b34801561034757600080fd5b50610350610c91565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038a578181015183820152602001610372565b50505050905090810190601f1680156103b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d157600080fd5b506102af600160a060020a0360043516610d1f565b3480156103f257600080fd5b506102af600160a060020a0360043516602435610d8d565b34801561041657600080fd5b506102af600160a060020a0360043516610e1d565b34801561043757600080fd5b50610443600435610e65565b604080519384526020840192909252151582820152519081900360600190f35b34801561046f57600080fd5b506102d8610e99565b34801561048457600080fd5b506102d8610e9f565b34801561049957600080fd5b506102d8610ea5565b3480156104ae57600080fd5b506102af600160a060020a0360043516610eab565b3480156104cf57600080fd5b506102af600160a060020a0360043581169060243516604435610f1b565b3480156104f957600080fd5b506102d86110c4565b34801561050e57600080fd5b506102d86110ca565b34801561052357600080fd5b506102d8600160a060020a03600435166110d0565b34801561054457600080fd5b506102d86115fa565b34801561055957600080fd5b506102af611600565b34801561056e57600080fd5b506102af611609565b34801561058357600080fd5b5061058c611645565b60408051600160a060020a039092168252519081900360200190f35b3480156105b457600080fd5b506102d8611686565b3480156105c957600080fd5b506105d560043561168c565b005b3480156105e357600080fd5b506102af611781565b3480156105f857600080fd5b506105d5600160a060020a0360043516611891565b34801561061957600080fd5b506102d8600160a060020a0360043516611911565b34801561063a57600080fd5b506105d561192c565b34801561064f57600080fd5b506102af600160a060020a03600435166119b4565b34801561067057600080fd5b5061058c611a1d565b34801561068557600080fd5b506102af600160a060020a0360043516602435611a2c565b3480156106a957600080fd5b506102d8600435611ab4565b3480156106c157600080fd5b506102d8611ad8565b3480156106d657600080fd5b506102d8611ade565b3480156106eb57600080fd5b50610350611b9a565b34801561070057600080fd5b506102af600160a060020a0360043516602435611bf5565b34801561072457600080fd5b506102d8611c30565b34801561073957600080fd5b506102af600160a060020a0360043516602435611c36565b34801561075d57600080fd5b50610769600435611cbe565b6040805192835260208301919091528051918290030190f35b34801561078e57600080fd5b506102af600160a060020a0360043516611cea565b3480156107af57600080fd5b506102af600160a060020a0360043516602435611d27565b3480156107d357600080fd5b506102af600160a060020a0360043516611e9f565b3480156107f457600080fd5b506102d8611edc565b34801561080957600080fd5b506102af61243e565b34801561081e57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102af948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061247a9650505050505050565b34801561088757600080fd5b506102af600435612605565b34801561089f57600080fd5b5061058c61266f565b3480156108b457600080fd5b506102af600160a060020a036004351660243561267e565b3480156108d857600080fd5b506102d8600160a060020a0360043581169060243516612749565b3480156108ff57600080fd5b506102d8600160a060020a0360043516612774565b34801561092057600080fd5b506105d5600435612808565b34801561093857600080fd5b506102d8612916565b34801561094d57600080fd5b506102d861291c565b34801561096257600080fd5b506105d5600160a060020a03600435166129c5565b34801561098357600080fd5b506102d8600435612a0b565b603354600090819060ff1615156001146109a857600080fd5b6109b3336004611bf5565b15156001146109c157600080fd5b6109cd33610400611bf5565b156109d757600080fd5b60345433600090815260316020526040902060030154106109f757600080fd5b610a00336110d0565b5060095460ff1615610a1157600080fd5b5060005b603654811015610ad75782603682815481101515610a2f57fe5b906000526020600020906003020160000154148015610a7457506036805482908110610a5757fe5b600091825260209091206002600390920201015460ff1615156001145b15610acf5733600090815260316020526040902054610a9290612a70565b6036805483908110610aa057fe5b600091825260208083206003928302016001018054949094019093556034543383526031909352604090912001555b600101610a15565b6034543360009081526031602052604090206003015414610af457fe5b6034543360008181526031602090815260409182902054825190815291518793927f6c7eb2743ec28489909706ea440d909129004996be657d36c6e9add778546abf92908290030190a4600191505b50919050565b600254600090600160a060020a0316331480610b6f5750600054600160a060020a031633145b1515610b7a57600080fd5b60335460ff161515600114610b8e57600080fd5b60095460ff1615610b9e57600080fd5b6033805460ff19169055610bb0611ade565b6035819055610bbe90612aa5565b6034546035546040517f857b4631e7ebad75ee4937e2bfb5ca31eb4a27140ec7aac09984ef81a326776b90600090a3506035545b90565b60095460ff1681565b6000805b603754811015610b435782603782815481101515610c1c57fe5b9060005260206000209060020201600001541415610c5b576037805482908110610c4257fe5b9060005260206000209060020201600101549150610b43565b600101610c02565b60008054600160a060020a03163314610c7b57600080fd5b610c858383612b20565b50600190505b92915050565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b505050505081565b6002546000908190600160a060020a0316331480610d475750600054600160a060020a031633145b1515610d5257600080fd5b610d5d836004611bf5565b15610d6757600080fd5b506305f5e100610d778382612b20565b50610d83836004612cbe565b5060019392505050565b60095460009060ff1615610da057600080fd5b610dac33610400611bf5565b15610db657600080fd5b336000818152603260209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600254600090600160a060020a0316331480610e435750600054600160a060020a031633145b1515610e4e57600080fd5b610e5a82610400612cbe565b50600190505b919050565b6036805482908110610e7357fe5b600091825260209091206003909102018054600182015460029092015490925060ff1683565b60075481565b60055490565b602e5481565b6002546000908190600160a060020a0316331480610ed35750600054600160a060020a031633145b1515610ede57600080fd5b600854600110610eed57600080fd5b610ef8836004611bf5565b1515600114610f0657600080fd5b5063034fe1086064420601610d838382612b20565b6009546000908190819060ff1615610f3257600080fd5b610f3e85610400611bf5565b15610f4857600080fd5b610f51866110d0565b50610f5b856110d0565b505050600160a060020a03808516600081815260316020526040808220549387168252812054919052610f94828563ffffffff612d2516565b600160a060020a0387166000908152603160209081526040808320939093556032815282822033835290522054610fd1908563ffffffff612d2516565b600160a060020a038088166000908152603260209081526040808320338452825280832094909455918816815260319091522054611015908563ffffffff612d3a16565b600160a060020a038087166000908152603160205260408082209390935590881681522054611045908390612d4a565b151561105057600080fd5b600160a060020a038516600090815260316020526040902054611074908290612d4a565b151561107f57600080fd5b84600160a060020a031686600160a060020a0316600080516020612f8e833981519152866040518082815260200191505060405180910390a350600195945050505050565b602f5481565b60355481565b6009546000908190819081908190819081908190819060ff16156110f357600080fd5b6007546009101561110357600080fd5b61110f8a610400611bf5565b1561111957600080fd5b60016008541180156111475750600854600160a060020a038b16600090815260316020526040902060020154105b156111ff57600160a060020a038a166000908152603160205260408120546305f5e1008082049a508a02900311156111c257600160a060020a038a1660008181526031602090815260408083205481516305f5e1008e0290910381529051929392600080516020612f8e833981519152929181900390910190a35b600160a060020a038a1660009081526031602052604090206305f5e1008902808255600854600283015560075460019092019190915598506115ed565b600160a060020a038a1660009081526031602052604090206001015460075411156115ed5760016007541180156112395750600860075411155b156114cc57611246612e2b565b600160a060020a038b1660009081526031602052604090205481151561126857fe5b049650611273612e2b565b600160a060020a038b166000908152603160205260408120549189029750600a890696509087900394508411156112e657600160a060020a038a1660008181526031602090815260408083208a905580518881529051929392600080516020612f8e833981519152929181900390910190a35b6000925060008511801561130c57506000602460001987016009811061130857fe5b0154115b1561133057611319612e2b565b602460001987016009811061132a57fe5b01540292505b6000831180156113575750600a60075460080360010160088110151561135257fe5b015483105b1561145b57600160a060020a038a1660009081526031602052604090205461138e90611389818663ffffffff612d3a16565b612d4a565b50604080518481529051600160a060020a038c1691600091600080516020612f8e8339815191529181900360200190a3600160a060020a038a166000908152603160205260409020546113e7908463ffffffff612d3a16565b600160a060020a038b1660009081526031602052604090205560075461142b908490600a90600160089182030190811061141d57fe5b01549063ffffffff612d2516565b600a60075460080360010160088110151561144257fe5b0155600554611457908463ffffffff612d3a16565b6005555b600754600160a060020a038b1660009081526031602052604090206001810191909155600854600290910154146114ac57600854600160a060020a038b166000908152603160205260409020600201555b600160a060020a038a1660009081526031602052604090205498506115ed565b600754600914156115ed57600160a060020a038a166000908152603160205260409020546114f990611ab4565b600160a060020a038b16600090815260316020526040902054909250611525908363ffffffff612d2516565b9050600081111561145b57600160a060020a038a166000908152603160205260409020546115539083612d4a565b50600160a060020a038a16600081815260316020908152604080832086905580518581529051929392600080516020612f8e833981519152929181900390910190a3600754600160a060020a038b1660009081526031602052604090206001810191909155600854600290910154146114ac57600854600160a060020a038b16600090815260316020526040902060028101919091555498505b5050505050505050919050565b60065481565b60335460ff1681565b60008054600160a060020a0316331461162157600080fd5b60095460ff161561163157600080fd5b506009805460ff1916600190811790915590565b600254600090600160a060020a031633148061166b5750600054600160a060020a031633145b151561167657600080fd5b50600254600160a060020a031690565b60305481565b600254600160a060020a03163314806116af5750600054600160a060020a031633145b15156116ba57600080fd5b60335460ff1615156001146116ce57600080fd5b60408051606081018252918252600060208301818152600192840183815260368054948501815590925292517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b860039093029283015591517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b982015590517f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81ba909101805460ff1916911515919091179055565b600254600090600160a060020a03163314806117a75750600054600160a060020a031633145b15156117b257600080fd5b60095460ff16156117c257600080fd5b6007546009146117d157600080fd5b6008546064116117e057600080fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261182f90600a906008612e8e565b5060016007819055600880549091019055600654600a0a620186a002602e819055602d5461185c91612d25565b602d556008546040517fc1d4931e10652da8ab23604510531810d2eebfcd33a81ba4946d702ce8057b6490600090a250600190565b600054600160a060020a031633146118a857600080fd5b600254604051600160a060020a038084169216907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f90600090a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526031602052604090205490565b600154600160a060020a0316331461194357600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002546000908190600160a060020a03163314806119dc5750600054600160a060020a031633145b15156119e757600080fd5b6119f2836002611bf5565b156119fc57600080fd5b5063034fe1086064420601611a118382612b20565b50610d83836002612cbe565b600054600160a060020a031681565b60008054600160a060020a03163314611a4457600080fd5b602f54821115611a5357600080fd5b600160a060020a038316600090815260316020526040902054611a7c908363ffffffff612d3a16565b600160a060020a038416600090815260316020526040902055602f54611aa8908363ffffffff612d2516565b602f5550600192915050565b6000611abe612e2b565b611ac6612e2b565b83811515611ad057fe5b040292915050565b60085481565b600080805b603654811015611b955781603682815481101515611afd57fe5b906000526020600020906003020160010154118015611b4257506036805482908110611b2557fe5b600091825260209091206002600390920201015460ff1615156001145b15611b8d576036805482908110611b5557fe5b9060005260206000209060030201600101549150603681815481101515611b7857fe5b90600052602060002090600302016000015492505b600101611ae3565b505090565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d175780601f10610cec57610100808354040283529160200191610d17565b600160a060020a0382166000908152603160205260408120600401548190831615611c235750600180611c28565b506000805b509392505050565b602d5481565b60008054600160a060020a03163314611c4e57600080fd5b603054821115611c5d57600080fd5b600160a060020a038316600090815260316020526040902054611c86908363ffffffff612d3a16565b600160a060020a038416600090815260316020526040902055603054611cb2908363ffffffff612d2516565b60305550600192915050565b6037805482908110611ccc57fe5b60009182526020909120600290910201805460019091015490915082565b600254600090600160a060020a0316331480611d105750600054600160a060020a031633145b1515611d1b57600080fd5b610e5a82610400612e48565b6009546000908190819060ff1615611d3e57600080fd5b600160a060020a0385161515611d5357600080fd5b611d5f85610400611bf5565b15611d6957600080fd5b611d7284611ab4565b935060008411611d8157600080fd5b611d8a856110d0565b50611d94336110d0565b50503360008181526031602052604080822054600160a060020a038816835290822054929091529150611dcd828563ffffffff612d2516565b3360009081526031602052604080822092909255600160a060020a03871681522054611dff908563ffffffff612d3a16565b600160a060020a038616600090815260316020526040808220929092553381522054611e2c908390612d4a565b1515611e3757600080fd5b600160a060020a038516600090815260316020526040902054611e5b908290612d4a565b1515611e6657600080fd5b604080518581529051600160a060020a038716913391600080516020612f8e8339815191529181900360200190a3506001949350505050565b600254600090600160a060020a0316331480611ec55750600054600160a060020a031633145b1515611ed057600080fd5b610c8b82610400611bf5565b600080600080611eea612ed1565b611ef2612ed1565b611efa612ed1565b600254600090819081908190600160a060020a0316331480611f265750600054600160a060020a031633145b1515611f3157600080fd5b60095460ff1615611f4157600080fd5b600754600911611f5057600080fd5b611fe26012600160075403600981101515611f6757fe5b0154600a600754600803600881101515611f7d57fe5b015402611fd66012600754600981101515611f9457fe5b0154603054811515611fa257fe5b06611fd66012600754600981101515611fb757fe5b0154602f54811515611fc557fe5b60055491900663ffffffff612d2516565b9063ffffffff612d2516565b60055560075460129060098110611ff557fe5b01546007546012906009811061200757fe5b015460055481151561201557fe5b04026005556007546012906009811061202a57fe5b01546007546012906009811061203c57fe5b0154602f5481151561204a57fe5b0402602f556007546012906009811061205f57fe5b01546007546012906009811061207157fe5b015460305481151561207f57fe5b0402603055600754600110156120f457600a6007546008036001016008811015156120a657fe5b015499506120d460126002600754036009811015156120c157fe5b0154602e54908c0263ffffffff612d3a16565b602e55600754600090600a9060016008918203019081106120f157fe5b01555b600860075410156123cf57600a60075460080360088110151561211357fe5b01549850600a60075460070360088110151561212b57fe5b015497508715156121cc576040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915261218d906024906009612ef1565b5060078054600101908190556040517f3c328c5db5168fd903728d91e7aede758575035688b483d468dedb7a95aeb5af90600090a26007549a50612431565b61012060405190810160405280600181526020016002815260200160038152602001600481526020016005815260200160068152602001600781526020016008815260200160098152509650610120604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525095506101206040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250945060009350600092505b600983101561231f57878784600981106122cf57fe5b6020020151633b9aca00028115156122e357fe5b048684600981106122f057fe5b602002015260058310156123145785836009811061230a57fe5b6020020151840193505b6001909201916122b9565b600591505b6009821015612378576064601b836009811061233c57fe5b0154850281151561234957fe5b0486836009811061235657fe5b60200201510185836009811061236857fe5b6020020152600190910190612324565b5060055b60098110156123ca57633b9aca00600a8a87846009811061239957fe5b6020020151028115156123a857fe5b048115156123b257fe5b04602482600981106123c057fe5b015560010161237c565b6123f7565b600754600814156123f757600a54602e546123ee916298968002612d3a565b602e556000600a555b60078054600101908190556040517f3c328c5db5168fd903728d91e7aede758575035688b483d468dedb7a95aeb5af90600090a26007549a505b5050505050505050505090565b60008054600160a060020a0316331461245657600080fd5b60095460ff16151560011461246a57600080fd5b506009805460ff19169055600190565b60095460009060ff161561248d57600080fd5b61249933610400611bf5565b156124a357600080fd5b336000818152603260209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a36040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561259457818101518382015260200161257c565b50505050905090810190601f1680156125c15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156125e357600080fd5b505af11580156125f7573d6000803e3d6000fd5b506001979650505050505050565b6000805b603654811015610b43578260368281548110151561262357fe5b906000526020600020906003020160000154141561266757603680548290811061264957fe5b600091825260209091206002600390920201015460ff169150610b43565b600101612609565b600154600160a060020a031681565b60008054600160a060020a0316331461269657600080fd5b60095460ff16156126a657600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d602081101561274057600080fd5b50519392505050565b600160a060020a03918216600090815260326020908152604080832093909416825291909152205490565b600060016008541180156127a45750600854600160a060020a038316600090815260316020526040902060020154105b156127d657600160a060020a0382166000908152603160205260409020546305f5e10090046305f5e100029050610e60565b6127de612e2b565b6127e6612e2b565b600160a060020a038416600090815260316020526040902054811515611ad057fe5b600254600090600160a060020a031633148061282e5750600054600160a060020a031633145b151561283957600080fd5b5060005b603654811015612912578160368281548110151561285757fe5b906000526020600020906003020160000154141561290a57603680548290811061287d57fe5b600091825260209091206002600390920201015460ff161515600114156128d65760006036828154811015156128af57fe5b60009182526020909120600390910201600201805460ff191691151591909117905561290a565b60016036828154811015156128e757fe5b60009182526020909120600390910201600201805460ff19169115159190911790555b60010161283d565b5050565b60345481565b600254600090600160a060020a03163314806129425750600054600160a060020a031633145b151561294d57600080fd5b60335460ff161561295d57600080fd5b60095460ff161561296d57600080fd5b6034805460019081019091556033805460ff1916909117905561299260366000612f23565b6034546040517f3e5d02a8c38e7fed83b839f2339ef5d1a13c79b9cb4142f9216e27a0f32bc39990600090a25060345490565b600054600160a060020a031633146129dc57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805b603654811015610b435782603682815481101515612a2957fe5b9060005260206000209060030201600001541415612a68576036805482908110612a4f57fe5b9060005260206000209060030201600101549150610b43565b600101612a0f565b80600260018201045b81811015610b43578091506002818285811515612a9257fe5b0401811515612a9d57fe5b049050612a79565b604080518082019091526034548152602081019182526037805460018101825560009190915290517f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae60029092029182015590517f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31af90910155565b600080808080600160a060020a0387161515612b3b57600080fd5b612b43612e2b565b861015612b4f57600080fd5b612b5b87610400611bf5565b15612b6557600080fd5b60095460ff1615612b7557600080fd5b612b7e876110d0565b50612b8886611ab4565b600160a060020a038816600090815260316020526040902054909450612bb890611389818763ffffffff612d3a16565b50606484046010029250600a84046006029150612be582612bd98686612d3a565b9063ffffffff612d3a16565b602e54909150612bfb908263ffffffff612d2516565b602e55602f54612c11908463ffffffff612d3a16565b602f55603054612c27908363ffffffff612d3a16565b603055600160a060020a038716600090815260316020526040902054612c53908563ffffffff612d3a16565b600160a060020a038816600090815260316020526040902055600554612c7f908263ffffffff612d3a16565b600555604080518581529051600160a060020a03891691600091600080516020612f8e8339815191529181900360200190a35060019695505050505050565b6000612cca8383611bf5565b15612cd457600080fd5b600160a060020a038316600090815260316020526040902060040154612d00908363ffffffff612d3a16565b600160a060020a03841660009081526031602052604090206004015550600192915050565b600082821115612d3457600080fd5b50900390565b81810182811015610c8b57600080fd5b600080600080600080600960075410156125f757879450869350600192505b6000841180612d785750600085115b8015612d8657506006548311155b156125f7575050600754600a80850494818504949082900692919006908310612e2057818110612df157612dd7828203600a8560065403600881101515612dc957fe5b01549063ffffffff612d3a16565b600a8460065403600881101515612dea57fe5b0155612e20565b612e0a818303600a856006540360088110151561141d57fe5b600a8460065403600881101515612e1d57fe5b01555b826001019250612d69565b60006012600160075403600981101515612e4157fe5b0154905090565b6000612e548383611bf5565b1515600114612e6257600080fd5b600160a060020a038316600090815260316020526040902060040154612d00908363ffffffff612d2516565b8260088101928215612ec1579160200282015b82811115612ec1578251829060ff16905591602001919060010190612ea1565b50612ecd929150612f47565b5090565b610120604051908101604052806009906020820280388339509192915050565b8260098101928215612ec15791602002820182811115612ec1578251829060ff16905591602001919060010190612ea1565b5080546000825560030290600052602060002090810190612f449190612f61565b50565b610bf291905b80821115612ecd5760008155600101612f4d565b610bf291905b80821115612ecd576000808255600182015560028101805460ff19169055600301612f675600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820970f285f47a7ec334ce0db67908f35b10c08d1a6b90ab675f5bbae3c63b6151e0029
Swarm Source
bzzr://970f285f47a7ec334ce0db67908f35b10c08d1a6b90ab675f5bbae3c63b6151e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.