Contract Overview
Balance: 0 Ether
Transactions: 2 txns
 Latest 2 txns

TxHash Age From To Value [TxFee]
0x2af42fa288cf49c6ba7602755b13fd31a4cf959a334864995b70718d260133d627 days 7 hrs ago0x47db3bf883f12673768b61b46eae74f8ffae3928  IN   0xdd328892cac10a69d509496f865a9f4b6fe57cc90 Ether0.00060762
0x8672873fe52fdff74906db400254cdc10de8810d1bb1bf030c1ac6de143490b527 days 7 hrs ago0x10348ed616908010dc94bead1774d5d4a80c31ff  IN   0xdd328892cac10a69d509496f865a9f4b6fe57cc90 Ether0.000113421


[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 2 Internal Transactions

ParentTxHash Block Age From To Value
0x2af42fa288cf49c6ba7602755b13fd31a4cf959a334864995b70718d260133d6486651627 days 7 hrs ago0xdd328892cac10a69d509496f865a9f4b6fe57cc90xd99b3a47115f595517efa80a8158a4a9b620cc400 Ether
0x0aaa66075624ab0e2cdbd0466c6f47b0e37719f0a8ef76daf3c11a006d493e69486630527 days 8 hrs ago0xd99b3a47115f595517efa80a8158a4a9b620cc40  Contract Creation0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact Match)
Contract Name: MultiSignatureVault
Compiler Version: v0.5.2+commit.1df8f40c
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.5.0;

// File: contracts/math/SafeMath.sol

library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) return 0;

    uint256 c = a * b;
    require(c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0);
    uint256 c = a / b;
    return c;
  }

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

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

    return c;
  }

  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

// File: contracts/blacklist/Blacklist.sol

library Blacklist {
  struct List {
    mapping(address => bool) registry;
  }
  function add(List storage list, address beneficiary) internal {
    list.registry[beneficiary] = true;
  }
  function remove(List storage list, address beneficiary) internal {
    list.registry[beneficiary] = false;
  }
  function check(List storage list, address beneficiary) view internal returns (bool) {
    return list.registry[beneficiary];
  }
}

// File: contracts/ownership/Ownable.sol

contract Ownable {
    address public owner;
    address public pendingOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier onlyPendingOwner() {
        require(msg.sender == pendingOwner);
        _;
    }

    function newOwner(address _newOwner) external onlyOwner {
        pendingOwner = _newOwner;
    }

    function claimOwnership() external onlyPendingOwner {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}

// File: contracts/blacklist/Blacklisted.sol

contract Blacklisted is Ownable {
  Blacklist.List private _list;
  modifier whenNotFrozen() {
    require(Blacklist.check(_list, msg.sender) == false);
    _;
  }
  event AddressAdded(address[] beneficiary);
  event AddressRemoved(address[] beneficiary);

  function freezeAccount(address[] calldata _beneficiary) external onlyOwner {
    for (uint256 i = 0; i < _beneficiary.length; i++) {
      Blacklist.add(_list, _beneficiary[i]);
    }
    emit AddressAdded(_beneficiary);
  }

  function deFreezeAccount(address[] calldata _beneficiary) external onlyOwner {
    for (uint256 i = 0; i < _beneficiary.length; i++) {
      Blacklist.remove(_list, _beneficiary[i]);
    }
    emit AddressRemoved(_beneficiary);
  }

  function isFrozen(address _beneficiary) external view returns (bool){
    return Blacklist.check(_list, _beneficiary);
  }
}

// File: contracts/lifecycle/Pausable.sol

contract Pausable is Ownable {

  event Pause();
  event Unpause();

  bool public paused = false;

  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  modifier whenPaused() {
    require(paused);
    _;
  }

  function pause() onlyOwner whenNotPaused external {
    paused = true;
    emit Pause();
  }

  function unpause() onlyOwner whenPaused external {
    paused = false;
    emit Unpause();
  }
}

// File: contracts/token/BasicInterface.sol

contract ERC20 {
    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);
}

// File: contracts/token/BasicToken.sol

contract BasicToken is ERC20 {
  using SafeMath for uint256;

  mapping(address => uint256) balances;
  uint256 public _totalSupply;

  function totalSupply() public view returns (uint256) {
    return _totalSupply;
  }

  function balanceOf(address owner) public view returns (uint256 balance) {
    return balances[owner];
  }

  function transfer(address to, uint256 value) public returns (bool) {
    _transfer(msg.sender, to, value);
    return true;
  }

  function _transfer(address from, address to, uint256 value) internal {
    require(to != address(0));
    balances[from] = balances[from].sub(value);
    balances[to] = balances[to].add(value);
    emit Transfer(from, to, value);
  }

}

// File: contracts/token/StandardToken.sol

contract StandardToken is BasicToken {
  mapping (address => mapping (address => uint256)) allowed;

  function transferFrom(address from, address to, uint256 value) public returns (bool) {
    allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);
    _transfer(from, to, value);
    emit Approval(from, msg.sender, allowed[from][msg.sender]);
    return true;
  }

  function approve(address spender, uint256 value) public returns (bool) {
    allowed[msg.sender][spender] = value;
    emit Approval(msg.sender, spender, value);
    return true;
  }

  function allowance(address owner, address spender) public view returns (uint256 remaining) {
    return allowed[owner][spender];
  }

  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
    require(spender != address(0));
    allowed[msg.sender][spender] = allowed[msg.sender][spender].add(addedValue);
    emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
    return true;
  }

  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
    require(spender != address(0));
    allowed[msg.sender][spender] = allowed[msg.sender][spender].sub(subtractedValue);
    emit Approval(msg.sender, spender, allowed[msg.sender][spender]);
    return true;
  }
}

// File: contracts/token/BurnableToken.sol

contract BurnableToken is StandardToken {

  function burn(address account, uint256 value) public {
    require(account != address(0));
    _totalSupply = _totalSupply.sub(value);
    balances[account] = balances[account].sub(value);
    emit Transfer(account, address(0), value);
  }

  function burnFrom(address account, uint256 value) public {
    allowed[account][msg.sender] = allowed[account][msg.sender].sub(value);
    burn(account, value);
    emit Approval(account, msg.sender, allowed[account][msg.sender]);
  }

}

// File: contracts/ownership/Multiownable.sol

contract Multiownable {

  uint256 public ownersGeneration;
  uint256 public howManyOwnersDecide;
  address[] public owners;
  bytes32[] public allOperations;
  address internal insideCallSender;
  uint256 internal insideCallCount;

  // Reverse lookup tables for owners and allOperations
  mapping(address => uint) public ownersIndices;
  mapping(bytes32 => uint) public allOperationsIndicies;

  // Owners voting mask per operations
  mapping(bytes32 => uint256) public votesMaskByOperation;
  mapping(bytes32 => uint256) public votesCountByOperation;

  event OwnershipTransferred(address[] previousOwners, uint howManyOwnersDecide, address[] newOwners, uint newHowManyOwnersDecide);
  event OperationCreated(bytes32 operation, uint howMany, uint ownersCount, address proposer);
  event OperationUpvoted(bytes32 operation, uint votes, uint howMany, uint ownersCount, address upvoter);
  event OperationPerformed(bytes32 operation, uint howMany, uint ownersCount, address performer);
  event OperationDownvoted(bytes32 operation, uint votes, uint ownersCount,  address downvoter);
  event OperationCancelled(bytes32 operation, address lastCanceller);

  function isOwner(address wallet) public view returns(bool) {
    return ownersIndices[wallet] > 0;
  }

  function ownersCount() public view returns(uint) {
    return owners.length;
  }

  function allOperationsCount() public view returns(uint) {
    return allOperations.length;
  }

  /**
  * @dev Allows to perform method by any of the owners
  */
  modifier onlyAnyOwner {
    if (checkHowManyOwners(1)) {
      bool update = (insideCallSender == address(0));
      if (update) {
        insideCallSender = msg.sender;
        insideCallCount = 1;
      }
      _;
      if (update) {
        insideCallSender = address(0);
        insideCallCount = 0;
      }
    }
  }

  /**
  * @dev Allows to perform method only after some owners call it with the same arguments
  */
  modifier onlyOwners() {
    require(howManyOwnersDecide > 0);
    require(howManyOwnersDecide <= owners.length);

    if (checkHowManyOwners(howManyOwnersDecide)) {
      bool update = (insideCallSender == address(0));
      if (update) {
        insideCallSender = msg.sender;
        insideCallCount = howManyOwnersDecide;
      }
      _;
      if (update) {
        insideCallSender = address(0);
        insideCallCount = 0;
      }
    }
  }

  constructor(address[] memory _owners) public {
    owners.push(msg.sender);
    ownersIndices[msg.sender] = 1;
    howManyOwnersDecide = 1;
    transferOwnership(_owners, 2);
  }

  /**
  * @dev onlyManyOwners modifier helper
  */
  function checkHowManyOwners(uint howMany) internal returns(bool) {
    if (insideCallSender == msg.sender) {
      require(howMany <= insideCallCount);
      return true;
    }

    uint ownerIndex = ownersIndices[msg.sender] - 1;
    require(ownerIndex < owners.length);
    bytes32 operation = keccak256(abi.encodePacked(msg.data, ownersGeneration));

    require((votesMaskByOperation[operation] & (2 ** ownerIndex)) == 0);
    votesMaskByOperation[operation] |= (2 ** ownerIndex);
    uint operationVotesCount = votesCountByOperation[operation] + 1;
    votesCountByOperation[operation] = operationVotesCount;
    if (operationVotesCount == 1) {
      allOperationsIndicies[operation] = allOperations.length;
      allOperations.push(operation);
      emit OperationCreated(operation, howMany, owners.length, msg.sender);
    }
    emit OperationUpvoted(operation, operationVotesCount, howMany, owners.length, msg.sender);

    // If enough owners confirmed the same operation
    if (votesCountByOperation[operation] == howMany) {
      deleteOperation(operation);
      emit OperationPerformed(operation, howMany, owners.length, msg.sender);
      return true;
    }

    return false;
  }

  function deleteOperation(bytes32 operation) internal {
    uint index = allOperationsIndicies[operation];
    if (index < allOperations.length - 1) { // Not last
      allOperations[index] = allOperations[allOperations.length - 1];
      allOperationsIndicies[allOperations[index]] = index;
    }
    allOperations.length--;

    delete votesMaskByOperation[operation];
    delete votesCountByOperation[operation];
    delete allOperationsIndicies[operation];
  }

  function cancelPending(bytes32 operation) public onlyAnyOwner {
    uint ownerIndex = ownersIndices[msg.sender] - 1;
    require((votesMaskByOperation[operation] & (2 ** ownerIndex)) != 0);
    votesMaskByOperation[operation] &= ~(2 ** ownerIndex);
    uint operationVotesCount = votesCountByOperation[operation] - 1;
    votesCountByOperation[operation] = operationVotesCount;
    emit OperationDownvoted(operation, operationVotesCount, owners.length, msg.sender);
    if (operationVotesCount == 0) {
      deleteOperation(operation);
      emit OperationCancelled(operation, msg.sender);
    }
  }

  function transferOwnership(address[] memory newOwners, uint256 _howManyOwnersDecide) public onlyAnyOwner {
    _transferOwnership(newOwners, _howManyOwnersDecide);
  }

  function _transferOwnership(address[] memory newOwners, uint256 newHowManyOwnersDecide) internal onlyOwners {
    require(newOwners.length > 0);
    require(newOwners.length <= 256);
    require(newHowManyOwnersDecide > 0);
    require(newHowManyOwnersDecide <= newOwners.length);

    // Reset owners reverse lookup table
    for (uint j = 0; j < owners.length; j++) {
      delete ownersIndices[owners[j]];
    }
    for (uint i = 0; i < newOwners.length; i++) {
      require(newOwners[i] != address(0));
      require(ownersIndices[newOwners[i]] == 0);
      ownersIndices[newOwners[i]] = i + 1;
    }

    emit OwnershipTransferred(owners, howManyOwnersDecide, newOwners, newHowManyOwnersDecide);
    owners = newOwners;
    howManyOwnersDecide = newHowManyOwnersDecide;
    allOperations.length = 0;
    ownersGeneration++;
  }

}

// File: contracts/Hydra.sol

contract MultiSignatureVault is Multiownable {

  bool lockState;
  function () external payable {}

  constructor(address[] memory _owners) public Multiownable(_owners) {
    lockState = false;
  }

  function transferTo(address payable to, uint256 amount) external onlyOwners {
    require(!lockState);
    lockState = true;
    to.transfer(amount);
    lockState = false;
  }

  function transferTokensTo(address token, address to, uint256 amount) external onlyOwners {
    require(!lockState);
    lockState = true;
    ERC20(token).transfer(to, amount);
    lockState = false;
  }
}

contract Hydra is StandardToken, BurnableToken, Blacklisted, Pausable {

  string private _name;
  string private _symbol;
  uint8 private _decimals;

  MultiSignatureVault public vaultTeam;
  MultiSignatureVault public vaultInvestor;
  MultiSignatureVault public vaultOperation;

  constructor(address[] memory owners) public {
    _name = "Hydra Token";
    _symbol = "HDRA";
    _decimals = 18;
    _totalSupply = 300000000E18;

    vaultTeam = new MultiSignatureVault(owners);
    vaultInvestor = new MultiSignatureVault(owners);
    vaultOperation = new MultiSignatureVault(owners);

    balances[address(vaultTeam)] = 60000000E18;
    balances[address(vaultInvestor)] = 150000000E18;
    balances[address(vaultOperation)] = 90000000E18;

    emit Transfer(address(this), address(vaultTeam), 60000000E18);
    emit Transfer(address(this), address(vaultInvestor), 150000000E18);
    emit Transfer(address(this), address(vaultOperation), 90000000E18);
  }

  function name() public view returns (string memory) {
    return _name;
  }

  function symbol() public view returns (string memory) {
    return _symbol;
  }

  function decimals() public view returns (uint8) {
    return _decimals;
  }

  function transfer(address to, uint256 value) public whenNotPaused whenNotFrozen returns (bool) {
    return super.transfer(to, value);
  }

  function transferFrom(address from, address to, uint256 value) public whenNotPaused whenNotFrozen returns (bool) {
    return super.transferFrom(from, to, value);
  }

  function approve(address spender, uint256 value) public whenNotPaused whenNotFrozen returns (bool) {
    return super.approve(spender, value);
  }

  function increaseAllowance(address spender, uint addedValue) public whenNotPaused whenNotFrozen returns (bool success) {
    return super.increaseAllowance(spender, addedValue);
  }

  function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused whenNotFrozen returns (bool success) {
    return super.decreaseAllowance(spender, subtractedValue);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allOperationsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"howManyOwnersDecide","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"wallet","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferTokensTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allOperations","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"votesMaskByOperation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operation","type":"bytes32"}],"name":"cancelPending","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"votesCountByOperation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownersGeneration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwners","type":"address[]"},{"name":"_howManyOwnersDecide","type":"uint256"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownersIndices","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"allOperationsIndicies","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwners","type":"address[]"},{"indexed":false,"name":"howManyOwnersDecide","type":"uint256"},{"indexed":false,"name":"newOwners","type":"address[]"},{"indexed":false,"name":"newHowManyOwnersDecide","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"howMany","type":"uint256"},{"indexed":false,"name":"ownersCount","type":"uint256"},{"indexed":false,"name":"proposer","type":"address"}],"name":"OperationCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"votes","type":"uint256"},{"indexed":false,"name":"howMany","type":"uint256"},{"indexed":false,"name":"ownersCount","type":"uint256"},{"indexed":false,"name":"upvoter","type":"address"}],"name":"OperationUpvoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"howMany","type":"uint256"},{"indexed":false,"name":"ownersCount","type":"uint256"},{"indexed":false,"name":"performer","type":"address"}],"name":"OperationPerformed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"votes","type":"uint256"},{"indexed":false,"name":"ownersCount","type":"uint256"},{"indexed":false,"name":"downvoter","type":"address"}],"name":"OperationDownvoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"lastCanceller","type":"address"}],"name":"OperationCancelled","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040523480156200001157600080fd5b50604051620017f3380380620017f3833981018060405260208110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81518560208202830111640100000000821117156200008257600080fd5b505060028054600181810183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054600160a060020a0319163390811790915560009081526006602052604090208190558055909350839250620000f69150829064010000000062000108810204565b5050600a805460ff1916905562000869565b6200011d600164010000000062000187810204565b156200018357600454600160a060020a03161580156200014f5760048054600160a060020a0319163317905560016005555b620001648383640100000000620003d6810204565b8015620001815760048054600160a060020a031916905560006005555b505b5050565b600454600090600160a060020a0316331415620001b757600554821115620001ae57600080fd5b506001620003d1565b33600090815260066020526040902054600254600019909101908110620001dd57600080fd5b60008036600054604051602001808484808284379190910192835250506040805180830381526020928301825280519083012060008181526008909352912054909350600285900a1615915062000235905057600080fd5b60008181526008602090815260408083208054600287900a179055600990915290208054600190810191829055811415620002f857600380546000848152600760209081526040808320849055600184018555939091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910184905560025482518581529182018890528183015233606082015290517f6bab0114f9524353d2d33e64edd3ebbd16e21edd57de2226ba76c310a7ce22659181900360800190a15b60025460408051848152602081018490528082018890526060810192909252336080830152517f8dd9582c6577aea81973b5adeb6c135f6e18565d99578b7ba0c9377437ec02219181900360a00190a1600082815260096020526040902054851415620003c9576200037382640100000000620006c5810204565b600254604080518481526020810188905280820192909252336060830152517f8a11c8ca99994c292318ce367f65bf6ff61d390bc814b3588496f6fbcc32807a9181900360800190a160019350505050620003d1565b600093505050505b919050565b600154600010620003e657600080fd5b6002546001541115620003f857600080fd5b6200041460015462000187640100000000026401000000009004565b156200018357600454600160a060020a0316158015620004475760048054600160a060020a031916331790556001546005555b82516000106200045657600080fd5b825161010010156200046757600080fd5b600082116200047557600080fd5b82518211156200048457600080fd5b60005b600254811015620004d45760066000600283815481101515620004a657fe5b6000918252602080832090910154600160a060020a0316835282019290925260400181205560010162000487565b5060005b835181101562000597578351600090859083908110620004f457fe5b60209081029091010151600160a060020a031614156200051357600080fd5b6006600085838151811015156200052657fe5b6020908102909101810151600160a060020a0316825281019190915260400160002054156200055457600080fd5b806001016006600086848151811015156200056b57fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055600101620004d8565b507fd167b96814cd24898418cc293e8d47d54afe6dcf0631283f0830e1eae621f6bd6002600154858560405180806020018581526020018060200184815260200183810383528781815481526020019150805480156200062157602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831162000602575b50508381038252855181528551602091820191808801910280838360005b83811015620006595781810151838201526020016200063f565b50505050905001965050505050505060405180910390a182516200068590600290602086019062000791565b50600182905560006200069a600382620007fb565b506000805460010190558015620001815760048054600160a060020a03191690556000600555505050565b600081815260076020526040902054600354600019018110156200075257600380546000198101908110620006f657fe5b90600052602060002001546003828154811015156200071157fe5b906000526020600020018190555080600760006003848154811015156200073457fe5b90600052602060002001548152602001908152602001600020819055505b600380549062000767906000198301620007fb565b50506000908152600860209081526040808320839055600982528083208390556007909152812055565b828054828255906000526020600020908101928215620007e9579160200282015b82811115620007e95782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620007b2565b50620007f792915062000822565b5090565b8154818355818111156200018157600083815260209020620001819181019083016200084c565b6200084991905b80821115620007f7578054600160a060020a031916815560010162000829565b90565b6200084991905b80821115620007f7576000815560010162000853565b610f7a80620008796000396000f3fe608060405260043610610105576000357c010000000000000000000000000000000000000000000000000000000090048063568b5915116100a7578063b474b79211610076578063b474b79214610309578063b9488546146103bb578063cc047a04146103d0578063ea1a26441461040357610105565b8063568b591514610276578063893372ca146102a057806390a53085146102ca578063b25bb3a7146102f457610105565b80632f4a81df116100e35780632f4a81df146101ad5780632f54bf6e146101c25780633857170814610209578063431ab2331461024c57610105565b8063025e7c271461010757806322f2f89a1461014d5780632ccb1b3014610174575b005b34801561011357600080fd5b506101316004803603602081101561012a57600080fd5b503561042d565b60408051600160a060020a039092168252519081900360200190f35b34801561015957600080fd5b50610162610455565b60408051918252519081900360200190f35b34801561018057600080fd5b506101056004803603604081101561019757600080fd5b50600160a060020a03813516906020013561045c565b3480156101b957600080fd5b50610162610538565b3480156101ce57600080fd5b506101f5600480360360208110156101e557600080fd5b5035600160a060020a031661053e565b604080519115158252519081900360200190f35b34801561021557600080fd5b506101056004803603606081101561022c57600080fd5b50600160a060020a0381358116916020810135909116906040013561055e565b34801561025857600080fd5b506101626004803603602081101561026f57600080fd5b503561069b565b34801561028257600080fd5b506101626004803603602081101561029957600080fd5b50356106ba565b3480156102ac57600080fd5b50610105600480360360208110156102c357600080fd5b50356106cc565b3480156102d657600080fd5b50610162600480360360208110156102ed57600080fd5b503561081e565b34801561030057600080fd5b50610162610830565b34801561031557600080fd5b506101056004803603604081101561032c57600080fd5b81019060208101813564010000000081111561034757600080fd5b82018360208201111561035957600080fd5b8035906020019184602083028401116401000000008311171561037b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610836915050565b3480156103c757600080fd5b5061016261089a565b3480156103dc57600080fd5b50610162600480360360208110156103f357600080fd5b5035600160a060020a03166108a0565b34801561040f57600080fd5b506101626004803603602081101561042657600080fd5b50356108b2565b600280548290811061043b57fe5b600091825260209091200154600160a060020a0316905081565b6003545b90565b60015460001061046b57600080fd5b600254600154111561047c57600080fd5b6104876001546108c4565b1561053457600454600160a060020a03161580156104b85760048054600160a060020a031916331790556001546005555b600a5460ff16156104c857600080fd5b600a805460ff19166001179055604051600160a060020a0384169083156108fc029084906000818181858888f1935050505015801561050b573d6000803e3d6000fd5b50600a805460ff1916905580156105325760048054600160a060020a031916905560006005555b505b5050565b60015481565b600160a060020a038116600090815260066020526040812054115b919050565b60015460001061056d57600080fd5b600254600154111561057e57600080fd5b6105896001546108c4565b1561053257600454600160a060020a03161580156105ba5760048054600160a060020a031916331790556001546005555b600a5460ff16156105ca57600080fd5b600a805460ff19166001179055604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820185905291519186169163a9059cbb916044808201926020929091908290030181600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b505050506040513d602081101561066d57600080fd5b5050600a805460ff1916905580156106955760048054600160a060020a031916905560006005555b50505050565b60038054829081106106a957fe5b600091825260209091200154905081565b60086020526000908152604090205481565b6106d660016108c4565b1561081b57600454600160a060020a03161580156107065760048054600160a060020a0319163317905560016005555b3360009081526006602090815260408083205485845260089092529091205460001990910190600282900a16151561073d57600080fd5b60008381526008602090815260408083208054600286810a19919091169091556009835292819020805460001901908190559254815187815292830184905282820152336060830152517f3e0a7036018b5a2a3c5d0afa14e51998ef3cf98c38e4289a8897222b3acf75a79181900360800190a18015156107fc576107c184610afe565b6040805185815233602082015281517f55e0dd61c29aac6fc36807628300ad3e3ec68655ae76ae4002f7fb101496fa9f929181900390910190a15b505080156105345760048054600160a060020a03191690556000600555505b50565b60096020526000908152604090205481565b60005481565b61084060016108c4565b1561053457600454600160a060020a03161580156108705760048054600160a060020a0319163317905560016005555b61087a8383610bc4565b80156105325760048054600160a060020a03191690556000600555505050565b60025490565b60066020526000908152604090205481565b60076020526000908152604090205481565b600454600090600160a060020a03163314156108f1576005548211156108e957600080fd5b506001610559565b3360009081526006602052604090205460025460001990910190811061091657600080fd5b60008036600054604051602001808484808284379190910192835250506040805180830381526020928301825280519083012060008181526008909352912054909350600285900a1615915061096d905057600080fd5b60008181526008602090815260408083208054600287900a179055600990915290208054600190810191829055811415610a2f57600380546000848152600760209081526040808320849055600184018555939091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910184905560025482518581529182018890528183015233606082015290517f6bab0114f9524353d2d33e64edd3ebbd16e21edd57de2226ba76c310a7ce22659181900360800190a15b60025460408051848152602081018490528082018890526060810192909252336080830152517f8dd9582c6577aea81973b5adeb6c135f6e18565d99578b7ba0c9377437ec02219181900360a00190a1600082815260096020526040902054851415610af357610a9e82610afe565b600254604080518481526020810188905280820192909252336060830152517f8a11c8ca99994c292318ce367f65bf6ff61d390bc814b3588496f6fbcc32807a9181900360800190a160019350505050610559565b506000949350505050565b60008181526007602052604090205460035460001901811015610b8757600380546000198101908110610b2d57fe5b9060005260206000200154600382815481101515610b4757fe5b90600052602060002001819055508060076000600384815481101515610b6957fe5b90600052602060002001548152602001908152602001600020819055505b6003805490610b9a906000198301610e87565b50506000908152600860209081526040808320839055600982528083208390556007909152812055565b600154600010610bd357600080fd5b6002546001541115610be457600080fd5b610bef6001546108c4565b1561053457600454600160a060020a0316158015610c205760048054600160a060020a031916331790556001546005555b8251600010610c2e57600080fd5b82516101001015610c3e57600080fd5b60008211610c4b57600080fd5b8251821115610c5957600080fd5b60005b600254811015610ca65760066000600283815481101515610c7957fe5b6000918252602080832090910154600160a060020a03168352820192909252604001812055600101610c5c565b5060005b8351811015610d62578351600090859083908110610cc457fe5b60209081029091010151600160a060020a03161415610ce257600080fd5b600660008583815181101515610cf457fe5b6020908102909101810151600160a060020a031682528101919091526040016000205415610d2157600080fd5b80600101600660008684815181101515610d3757fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055600101610caa565b507fd167b96814cd24898418cc293e8d47d54afe6dcf0631283f0830e1eae621f6bd600260015485856040518080602001858152602001806020018481526020018381038352878181548152602001915080548015610dea57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610dcc575b50508381038252855181528551602091820191808801910280838360005b83811015610e20578181015183820152602001610e08565b50505050905001965050505050505060405180910390a18251610e4a906002906020860190610eab565b5060018290556000610e5d600382610e87565b5060008054600101905580156105325760048054600160a060020a03191690556000600555505050565b81548183558181111561053257600083815260209020610532918101908301610f10565b828054828255906000526020600020908101928215610f00579160200282015b82811115610f005782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190610ecb565b50610f0c929150610f2a565b5090565b61045991905b80821115610f0c5760008155600101610f16565b61045991905b80821115610f0c578054600160a060020a0319168155600101610f3056fea165627a7a723058207a21415305c49e2ba5eb383769954dbb88f5336a36a0ecbff12740cdcdc79af100290000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000098598d4c5cc0b99a19fab50c015d7d8049339f0600000000000000000000000010348ed616908010dc94bead1774d5d4a80c31ff000000000000000000000000bc4344802e628a9b651feef5c5520a21156636cc00000000000000000000000047db3bf883f12673768b61b46eae74f8ffae3928

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000098598d4c5cc0b99a19fab50c015d7d8049339f0600000000000000000000000010348ed616908010dc94bead1774d5d4a80c31ff000000000000000000000000bc4344802e628a9b651feef5c5520a21156636cc00000000000000000000000047db3bf883f12673768b61b46eae74f8ffae3928

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [2] : 00000000000000000000000098598d4c5cc0b99a19fab50c015d7d8049339f06
Arg [3] : 00000000000000000000000010348ed616908010dc94bead1774d5d4a80c31ff
Arg [4] : 000000000000000000000000bc4344802e628a9b651feef5c5520a21156636cc
Arg [5] : 00000000000000000000000047db3bf883f12673768b61b46eae74f8ffae3928


   Swarm Source:
bzzr://7a21415305c49e2ba5eb383769954dbb88f5336a36a0ecbff12740cdcdc79af1

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward