ETH Price: $2,395.41 (-1.92%)

Contract

0x5cC61caad7db681207325c504104B080e8963da9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer143059512022-03-02 6:21:40952 days ago1646202100IN
0x5cC61caa...0e8963da9
0 ETH0.0021869228.45378027
Transfer121438152021-03-31 0:04:411288 days ago1617149081IN
0x5cC61caa...0e8963da9
0 ETH0.01250859184.57142857
Transfer120410982021-03-15 4:48:391304 days ago1615783719IN
0x5cC61caa...0e8963da9
0 ETH0.01328076196
Transfer100627472020-05-14 6:48:111609 days ago1589438891IN
0x5cC61caa...0e8963da9
0 ETH0.0016634520.1
Transfer98708852020-04-14 13:35:451639 days ago1586871345IN
0x5cC61caa...0e8963da9
0 ETH0.000204825
Transfer97956812020-04-03 0:07:381650 days ago1585872458IN
0x5cC61caa...0e8963da9
0 ETH0.000203273
Transfer94280912020-02-06 8:45:511707 days ago1580978751IN
0x5cC61caa...0e8963da9
0 ETH0.000364134.4
Transfer94280912020-02-06 8:45:511707 days ago1580978751IN
0x5cC61caa...0e8963da9
0 ETH0.000180244.4
Transfer94280882020-02-06 8:45:211707 days ago1580978721IN
0x5cC61caa...0e8963da9
0 ETH0.000364134.4
Transfer94280862020-02-06 8:45:081707 days ago1580978708IN
0x5cC61caa...0e8963da9
0 ETH0.000364134.4
Transfer94280862020-02-06 8:45:081707 days ago1580978708IN
0x5cC61caa...0e8963da9
0 ETH0.000180244.4
Transfer94280842020-02-06 8:44:351707 days ago1580978675IN
0x5cC61caa...0e8963da9
0 ETH0.000180244.4
Transfer94280842020-02-06 8:44:351707 days ago1580978675IN
0x5cC61caa...0e8963da9
0 ETH0.000180244.4
Transfer94280842020-02-06 8:44:351707 days ago1580978675IN
0x5cC61caa...0e8963da9
0 ETH0.000180244.4
Transfer92002362020-01-02 9:35:011742 days ago1577957701IN
0x5cC61caa...0e8963da9
0 ETH0.000248273
Transfer91314582019-12-19 16:30:031756 days ago1576773003IN
0x5cC61caa...0e8963da9
0 ETH0.000273063.3
Transfer91314582019-12-19 16:30:031756 days ago1576773003IN
0x5cC61caa...0e8963da9
0 ETH0.000273063.3
Transfer91309522019-12-19 14:05:061756 days ago1576764306IN
0x5cC61caa...0e8963da9
0 ETH0.000413735
Transfer91309482019-12-19 14:03:281756 days ago1576764208IN
0x5cC61caa...0e8963da9
0 ETH0.000413735
Transfer90842072019-12-10 17:07:081765 days ago1575997628IN
0x5cC61caa...0e8963da9
0 ETH0.0016795241
Transfer90840432019-12-10 16:21:511765 days ago1575994911IN
0x5cC61caa...0e8963da9
0 ETH0.000163854
Transfer89964702019-11-25 4:24:521780 days ago1574655892IN
0x5cC61caa...0e8963da9
0 ETH0.0008022310
Transfer87571422019-10-17 7:03:411819 days ago1571295821IN
0x5cC61caa...0e8963da9
0 ETH0.000059441.5
Transfer87518712019-10-16 11:19:141820 days ago1571224754IN
0x5cC61caa...0e8963da9
0 ETH0.0009126111.385
Transfer84006632019-08-22 14:35:471875 days ago1566484547IN
0x5cC61caa...0e8963da9
0 ETH0.0008022310
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BbillerToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-12
*/

pragma solidity ^0.4.13;

contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

contract BbillerBallot is Ownable {
    BbillerToken public token;
    mapping(uint => Issue) public issues;

    uint issueDoesNotExistFlag = 0;
    uint issueVotingFlag = 1;
    uint issueAcceptedFlag = 2;
    uint issueRejectedFlag = 3;

    struct Issue {
        uint votingStartDate;
        uint votingEndDate;
        mapping(address => bool) isVoted;
        uint forCounter;
        uint againstCounter;
        uint flag;
    }

    event CreateIssue(uint _issueId, uint _votingStartDate, uint _votingEndDate, address indexed creator);
    event Vote(uint issueId, bool forVote, address indexed voter);
    event IssueAccepted(uint issueId);
    event IssueRejected(uint issueId);

    function BbillerBallot(BbillerToken _token) public {
        token = _token;
    }

    function createIssue(uint issueId, uint _votingStartDate, uint _votingEndDate) public onlyOwner {
        require(issues[issueId].flag == issueDoesNotExistFlag);

        Issue memory issue = Issue(
            {votingEndDate : _votingEndDate,
            votingStartDate : _votingStartDate,
            forCounter : 0,
            againstCounter : 0,
            flag : issueVotingFlag});
        issues[issueId] = issue;

        CreateIssue(issueId, _votingStartDate, _votingEndDate, msg.sender);
    }

    function vote(uint issueId, bool forVote) public {
        require(token.isTokenUser(msg.sender));

        Issue storage issue = issues[issueId];
        require(!issue.isVoted[msg.sender]);
        require(issue.flag == issueVotingFlag);
        require(issue.votingEndDate > now);
        require(issue.votingStartDate < now);

        issue.isVoted[msg.sender] = true;
        if (forVote) {
            issue.forCounter++;
        }
        else {
            issue.againstCounter++;
        }
        Vote(issueId, forVote, msg.sender);

        uint tokenUserCounterHalf = getTokenUserCounterHalf();
        if (issue.forCounter >= tokenUserCounterHalf) {
            issue.flag = issueAcceptedFlag;
            IssueAccepted(issueId);
        }
        if (issue.againstCounter >= tokenUserCounterHalf) {
            issue.flag = issueRejectedFlag;
            IssueRejected(issueId);
        }
    }

    function getVoteResult(uint issueId) public view returns (string) {
        Issue storage issue = issues[issueId];
        if (issue.flag == issueVotingFlag) {
            return 'Voting';
        }
        if (issue.flag == issueAcceptedFlag) {
            return 'Accepted';
        }
        if (issue.flag == issueRejectedFlag) {
            return 'Rejected';
        }
        if (issue.flag == issueDoesNotExistFlag) {
            return 'DoesNotExist';
        }
    }

    function getTokenUserCounterHalf() internal returns (uint) {
        // for division must be of uint type
        uint half = 2;
        uint tokenUserCounter = token.getTokenUserCounter();
        uint tokenUserCounterHalf = tokenUserCounter / half;
        if (tokenUserCounterHalf * half != tokenUserCounter) {
            // odd case
            tokenUserCounterHalf++;
        }
        return tokenUserCounterHalf;
    }
}

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed _from, address indexed _to, uint256 _value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);

        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed _to, uint256 _amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}

contract BbillerToken is MintableToken {
    string public symbol = 'BBILLER';
    uint public decimals = 18;
    uint public tokenUserCounter;  // number of users that owns this token

    mapping(address => bool) public isTokenUser;

    event CountTokenUser(address _tokenUser, uint _tokenUserCounter, bool increment);

    function getTokenUserCounter() public view returns (uint) {
        return tokenUserCounter;
    }

    function countTokenUser(address tokenUser) internal {
        if (!isTokenUser[tokenUser]) {
            isTokenUser[tokenUser] = true;
            tokenUserCounter++;
        }
        CountTokenUser(tokenUser, tokenUserCounter, true);
    }

    function transfer(address to, uint256 value) public returns (bool) {
        bool res = super.transfer(to, value);
        countTokenUser(to);
        return res;
    }

    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        bool res = super.transferFrom(from, to, value);
        countTokenUser(to);
        if (balanceOf(from) <= 0) {
            isTokenUser[from] = false;
            tokenUserCounter--;
            CountTokenUser(from, tokenUserCounter, false);
        }
        return res;
    }

    function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
        bool res = super.mint(_to, _amount);
        countTokenUser(_to);
        return res;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isTokenUser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenUserCounter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokenUserCounter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tokenUser","type":"address"},{"indexed":false,"name":"_tokenUserCounter","type":"uint256"},{"indexed":false,"name":"increment","type":"bool"}],"name":"CountTokenUser","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"}]

606060409081526003805460a060020a60ff02191690558051908101604052600781527f4242494c4c4552000000000000000000000000000000000000000000000000006020820152600490805161005b929160200190610081565b50601260055560038054600160a060020a03191633600160a060020a031617905561011c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100c257805160ff19168380011785556100ef565b828001600101855582156100ef579182015b828111156100ef5782518255916020019190600101906100d4565b506100fb9291506100ff565b5090565b61011991905b808211156100fb5760008155600101610105565b90565b610d998061012b6000396000f3006060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b8114610100578063095ea7b31461012757806318160ddd1461014957806323b872dd1461016e578063313ce5671461019657806340c10f19146101a957806364dad32f146101cb57806366188463146101ea57806370a082311461020c5780637d64bcb41461022b5780638da5cb5b1461023e578063908c3a6a1461026d57806395d89b4114610280578063a9059cbb1461030a578063be8dd49a1461032c578063d73dd6231461033f578063dd62ed3e14610361578063f2fde38b14610386575b600080fd5b341561010b57600080fd5b6101136103a7565b604051901515815260200160405180910390f35b341561013257600080fd5b610113600160a060020a03600435166024356103b7565b341561015457600080fd5b61015c610423565b60405190815260200160405180910390f35b341561017957600080fd5b610113600160a060020a0360043581169060243516604435610429565b34156101a157600080fd5b61015c6104d9565b34156101b457600080fd5b610113600160a060020a03600435166024356104df565b34156101d657600080fd5b610113600160a060020a0360043516610532565b34156101f557600080fd5b610113600160a060020a0360043516602435610547565b341561021757600080fd5b61015c600160a060020a0360043516610641565b341561023657600080fd5b61011361065c565b341561024957600080fd5b6102516106e7565b604051600160a060020a03909116815260200160405180910390f35b341561027857600080fd5b61015c6106f6565b341561028b57600080fd5b6102936106fc565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102cf5780820151838201526020016102b7565b50505050905090810190601f1680156102fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031557600080fd5b610113600160a060020a036004351660243561079a565b341561033757600080fd5b61015c6107a7565b341561034a57600080fd5b610113600160a060020a03600435166024356107ad565b341561036c57600080fd5b61015c600160a060020a0360043581169060243516610851565b341561039157600080fd5b6103a5600160a060020a036004351661087c565b005b60035460a060020a900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600080610437858585610917565b905061044284610a99565b600061044d86610641565b116104d157600160a060020a038516600090815260076020526040808220805460ff191690556006805460001901908190557fb83e1d14e8ccecc5461685cc4343c697baa6c3c30cd71b169b61a4ee9d7b1d2292889251600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a15b949350505050565b60055481565b600354600090819033600160a060020a039081169116146104ff57600080fd5b60035460a060020a900460ff161561051657600080fd5b6105208484610b44565b905061052b84610a99565b9392505050565b60076020526000908152604090205460ff1681565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156105a457600160a060020a0333811660009081526002602090815260408083209388168352929052908120556105db565b6105b4818463ffffffff610c5116565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a0390811691161461067a57600080fd5b60035460a060020a900460ff161561069157600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600354600160a060020a031681565b60065481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b505050505081565b6000806105208484610c63565b60065490565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546107e5908363ffffffff610d5e16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a0390811691161461089757600080fd5b600160a060020a03811615156108ac57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a038316151561092e57600080fd5b600160a060020a03841660009081526001602052604090205482111561095357600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561098657600080fd5b600160a060020a0384166000908152600160205260409020546109af908363ffffffff610c5116565b600160a060020a0380861660009081526001602052604080822093909355908516815220546109e4908363ffffffff610d5e16565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610a2c908363ffffffff610c5116565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a03811660009081526007602052604090205460ff161515610aeb57600160a060020a0381166000908152600760205260409020805460ff191660019081179091556006805490910190555b7fb83e1d14e8ccecc5461685cc4343c697baa6c3c30cd71b169b61a4ee9d7b1d22816006546001604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a150565b60035460009033600160a060020a03908116911614610b6257600080fd5b60035460a060020a900460ff1615610b7957600080fd5b600054610b8c908363ffffffff610d5e16565b6000908155600160a060020a038416815260016020526040902054610bb7908363ffffffff610d5e16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600082821115610c5d57fe5b50900390565b6000600160a060020a0383161515610c7a57600080fd5b600160a060020a033316600090815260016020526040902054821115610c9f57600080fd5b600160a060020a033316600090815260016020526040902054610cc8908363ffffffff610c5116565b600160a060020a033381166000908152600160205260408082209390935590851681522054610cfd908363ffffffff610d5e16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60008282018381101561052b57fe00a165627a7a7230582055b7063c5cf39b6677250e7de08a08371de57822708eeec9ded6897513d7b65d0029

Deployed Bytecode

0x6060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b8114610100578063095ea7b31461012757806318160ddd1461014957806323b872dd1461016e578063313ce5671461019657806340c10f19146101a957806364dad32f146101cb57806366188463146101ea57806370a082311461020c5780637d64bcb41461022b5780638da5cb5b1461023e578063908c3a6a1461026d57806395d89b4114610280578063a9059cbb1461030a578063be8dd49a1461032c578063d73dd6231461033f578063dd62ed3e14610361578063f2fde38b14610386575b600080fd5b341561010b57600080fd5b6101136103a7565b604051901515815260200160405180910390f35b341561013257600080fd5b610113600160a060020a03600435166024356103b7565b341561015457600080fd5b61015c610423565b60405190815260200160405180910390f35b341561017957600080fd5b610113600160a060020a0360043581169060243516604435610429565b34156101a157600080fd5b61015c6104d9565b34156101b457600080fd5b610113600160a060020a03600435166024356104df565b34156101d657600080fd5b610113600160a060020a0360043516610532565b34156101f557600080fd5b610113600160a060020a0360043516602435610547565b341561021757600080fd5b61015c600160a060020a0360043516610641565b341561023657600080fd5b61011361065c565b341561024957600080fd5b6102516106e7565b604051600160a060020a03909116815260200160405180910390f35b341561027857600080fd5b61015c6106f6565b341561028b57600080fd5b6102936106fc565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102cf5780820151838201526020016102b7565b50505050905090810190601f1680156102fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031557600080fd5b610113600160a060020a036004351660243561079a565b341561033757600080fd5b61015c6107a7565b341561034a57600080fd5b610113600160a060020a03600435166024356107ad565b341561036c57600080fd5b61015c600160a060020a0360043581169060243516610851565b341561039157600080fd5b6103a5600160a060020a036004351661087c565b005b60035460a060020a900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600080610437858585610917565b905061044284610a99565b600061044d86610641565b116104d157600160a060020a038516600090815260076020526040808220805460ff191690556006805460001901908190557fb83e1d14e8ccecc5461685cc4343c697baa6c3c30cd71b169b61a4ee9d7b1d2292889251600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a15b949350505050565b60055481565b600354600090819033600160a060020a039081169116146104ff57600080fd5b60035460a060020a900460ff161561051657600080fd5b6105208484610b44565b905061052b84610a99565b9392505050565b60076020526000908152604090205460ff1681565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156105a457600160a060020a0333811660009081526002602090815260408083209388168352929052908120556105db565b6105b4818463ffffffff610c5116565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a0390811691161461067a57600080fd5b60035460a060020a900460ff161561069157600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600354600160a060020a031681565b60065481565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107925780601f1061076757610100808354040283529160200191610792565b820191906000526020600020905b81548152906001019060200180831161077557829003601f168201915b505050505081565b6000806105208484610c63565b60065490565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546107e5908363ffffffff610d5e16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a0390811691161461089757600080fd5b600160a060020a03811615156108ac57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a038316151561092e57600080fd5b600160a060020a03841660009081526001602052604090205482111561095357600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561098657600080fd5b600160a060020a0384166000908152600160205260409020546109af908363ffffffff610c5116565b600160a060020a0380861660009081526001602052604080822093909355908516815220546109e4908363ffffffff610d5e16565b600160a060020a03808516600090815260016020908152604080832094909455878316825260028152838220339093168252919091522054610a2c908363ffffffff610c5116565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b600160a060020a03811660009081526007602052604090205460ff161515610aeb57600160a060020a0381166000908152600760205260409020805460ff191660019081179091556006805490910190555b7fb83e1d14e8ccecc5461685cc4343c697baa6c3c30cd71b169b61a4ee9d7b1d22816006546001604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390a150565b60035460009033600160a060020a03908116911614610b6257600080fd5b60035460a060020a900460ff1615610b7957600080fd5b600054610b8c908363ffffffff610d5e16565b6000908155600160a060020a038416815260016020526040902054610bb7908363ffffffff610d5e16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b600082821115610c5d57fe5b50900390565b6000600160a060020a0383161515610c7a57600080fd5b600160a060020a033316600090815260016020526040902054821115610c9f57600080fd5b600160a060020a033316600090815260016020526040902054610cc8908363ffffffff610c5116565b600160a060020a033381166000908152600160205260408082209390935590851681522054610cfd908363ffffffff610d5e16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60008282018381101561052b57fe00a165627a7a7230582055b7063c5cf39b6677250e7de08a08371de57822708eeec9ded6897513d7b65d0029

Swarm Source

bzzr://55b7063c5cf39b6677250e7de08a08371de57822708eeec9ded6897513d7b65d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.