ETH Price: $2,638.02 (-0.18%)

Contract

0x7c599D86fa5E87Edb3490877B491865dEc639B12
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Cancel67764622018-11-26 13:45:192153 days ago1543239919IN
0x7c599D86...dEc639B12
0 ETH0.0006759712
Transfer67458832018-11-21 13:39:212158 days ago1542807561IN
0x7c599D86...dEc639B12
2.3885 ETH0.0018202820

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
67764622018-11-26 13:45:192153 days ago1543239919
0x7c599D86...dEc639B12
2.3585 ETH
67764622018-11-26 13:45:192153 days ago1543239919
0x7c599D86...dEc639B12
0.03 ETH
67325262018-11-19 8:42:382160 days ago1542616958  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xCedfB2ca...6a364bB4A
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ModultradeProposal

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-07
*/

pragma solidity ^0.4.18;

// File: contracts/ERC20.sol

/*
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint public totalSupply;

  function balanceOf(address who) public constant returns (uint);

  function allowance(address owner, address spender) public constant returns (uint);

  function transfer(address to, uint value) public returns (bool ok);

  function transferFrom(address from, address to, uint value) public returns (bool ok);

  function approve(address spender, uint value) public returns (bool ok);

  event Transfer(address indexed from, address indexed to, uint value);

  event Approval(address indexed owner, address indexed spender, uint value);
}

// ERC223
contract ContractReceiver {
  function tokenFallback(address from, uint value) public;
}

// File: contracts/Ownable.sol

/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */
contract Ownable {

  address public owner;

  function Ownable() public { owner = msg.sender; }

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

  function transferOwnership(address newOwner) public onlyOwner {

    if (newOwner != address(0)) {
      owner = newOwner;
    }

  }
}

// File: contracts/Deployer.sol

contract Deployer {

  address public deployer;

  function Deployer() public { deployer = msg.sender; }

  modifier onlyDeployer() {
    require(msg.sender == deployer);
    _;
  }
}

// File: contracts/OracleOwnable.sol

contract OracleOwnable is Ownable {

  address public oracle;

  modifier onlyOracle() {
    require(msg.sender == oracle);
    _;
  }

  modifier onlyOracleOrOwner() {
    require(msg.sender == oracle || msg.sender == owner);
    _;
  }

  function setOracle(address newOracle) public onlyOracleOrOwner {
    if (newOracle != address(0)) {
      oracle = newOracle;
    }

  }

}

// File: contracts/ModultradeLibrary.sol

library ModultradeLibrary {
  enum Currencies {
  ETH, MTR
  }

  enum ProposalStates {
  Created, Paid, Delivery, Closed, Canceled
  }
}

// File: contracts/ModultradeStorage.sol

contract ModultradeStorage is Ownable, Deployer {

  bool private _doMigrate = true;

  mapping (address => address[]) public sellerProposals;

  mapping (uint => address) public proposalListAddress;

  address[] public proposals;

  event InsertProposalEvent (address _proposal, uint _id, address _seller);

  event PaidProposalEvent (address _proposal, uint _id);

  function ModultradeStorage() public {}

  function insertProposal(address seller, uint id, address proposal) public onlyOwner {
    sellerProposals[seller].push(proposal);
    proposalListAddress[id] = proposal;
    proposals.push(proposal);

    InsertProposalEvent(proposal, id, seller);
  }

  function getProposalsBySeller(address seller) public constant returns (address[]){
    return sellerProposals[seller];
  }

  function getProposals() public constant returns (address[]){
    return proposals;
  }

  function getProposalById(uint id) public constant returns (address){
    return proposalListAddress[id];
  }

  function getCount() public constant returns (uint) {
    return proposals.length;
  }

  function getCountBySeller(address seller) public constant returns (uint) {
    return sellerProposals[seller].length;
  }

  function firePaidProposalEvent(address proposal, uint id) public {
    require(proposalListAddress[id] == proposal);

    PaidProposalEvent(proposal, id);
  }

  function changeOwner(address newOwner) public onlyDeployer {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

// File: contracts/ModultradeProposal.sol

contract ModultradeProposal is OracleOwnable, ContractReceiver {

  address public seller;

  address public buyer;

  uint public id;

  string public title;

  uint public price;

  ModultradeLibrary.Currencies public currency;

  uint public units;

  uint public total;

  uint public validUntil;

  ModultradeLibrary.ProposalStates public state;

  uint public payDate;

  string public deliveryId;

  uint public fee;

  address public feeAddress;

  ERC20 mtrContract;

  Modultrade modultrade;

  bytes public tokenFallbackData;

  event CreatedEvent(uint _id, ModultradeLibrary.ProposalStates _state);

  event PaidEvent(uint _id, ModultradeLibrary.ProposalStates _state, address _buyer);

  event DeliveryEvent(uint _id, ModultradeLibrary.ProposalStates _state, string _deliveryId);

  event ClosedEvent(uint _id, ModultradeLibrary.ProposalStates _state, address _seller, uint _amount);

  event CanceledEvent(uint _id, ModultradeLibrary.ProposalStates _state, address _buyer, uint _amount);

  function ModultradeProposal(address _modultrade, address _seller, address _mtrContractAddress) public {
    seller = _seller;
    state = ModultradeLibrary.ProposalStates.Created;
    mtrContract = ERC20(_mtrContractAddress);
    modultrade = Modultrade(_modultrade);
  }

  function setProposal(uint _id,
  string _title,
  uint _price,
  ModultradeLibrary.Currencies _currency,
  uint _units,
  uint _total,
  uint _validUntil
  ) public onlyOracleOrOwner {
    require(state == ModultradeLibrary.ProposalStates.Created);
    id = _id;
    title = _title;
    price = _price;
    currency = _currency;
    units = _units;
    total = _total;
    validUntil = _validUntil;
  }

  function setFee(uint _fee, address _feeAddress) public onlyOracleOrOwner {
    require(state == ModultradeLibrary.ProposalStates.Created);
    fee = _fee;
    feeAddress = _feeAddress;
  }

  function() public payable {purchase();}

  function purchase() public payable {
    require(currency == ModultradeLibrary.Currencies.ETH);
    require(msg.value >= total);
    setPaid(msg.sender);
  }

  function setPaid(address _buyer) internal {
    require(state == ModultradeLibrary.ProposalStates.Created);
    state = ModultradeLibrary.ProposalStates.Paid;
    buyer = _buyer;
    payDate = now;
    PaidEvent(id, state, buyer);
    modultrade.firePaidProposalEvent(address(this), id);
  }

  function paid(address _buyer) public onlyOracleOrOwner {
    require(getBalance() >= total);
    setPaid(_buyer);
  }

  function mtrTokenFallBack(address from, uint value) internal {
    require(currency == ModultradeLibrary.Currencies.MTR);
    require(msg.sender == address(mtrContract));
    require(value >= total);
    setPaid(from);
  }

  function tokenFallback(address from, uint value) public {
    mtrTokenFallBack(from, value);
  }

  function tokenFallback(address from, uint value, bytes data) public {
    tokenFallbackData = data;
    mtrTokenFallBack(from, value);
  }

  function delivery(string _deliveryId) public onlyOracleOrOwner {
    require(state == ModultradeLibrary.ProposalStates.Paid);
    deliveryId = _deliveryId;
    state = ModultradeLibrary.ProposalStates.Delivery;
    DeliveryEvent(id, state, deliveryId);
    modultrade.fireDeliveryProposalEvent(address(this), id);
  }

  function close() public onlyOracleOrOwner {
    require(state != ModultradeLibrary.ProposalStates.Closed);
    require(state != ModultradeLibrary.ProposalStates.Canceled);

    if (currency == ModultradeLibrary.Currencies.ETH) {
      closeEth();
    }
    if (currency == ModultradeLibrary.Currencies.MTR) {
      closeMtr();
    }

    state = ModultradeLibrary.ProposalStates.Closed;
    ClosedEvent(id, state, seller, this.balance);
    modultrade.fireCloseProposalEvent(address(this), id);
  }

  function closeEth() private {
    if (fee > 0) {
      feeAddress.transfer(fee);
    }
    seller.transfer(this.balance);
  }

  function closeMtr() private {
    if (fee > 0) {
      mtrContract.transfer(feeAddress, fee);
    }
    mtrContract.transfer(seller, getBalance());
  }

  function cancel(uint cancelFee) public onlyOracleOrOwner {
    require(state != ModultradeLibrary.ProposalStates.Closed);
    require(state != ModultradeLibrary.ProposalStates.Canceled);
    uint _balance = getBalance();
    if (_balance > 0) {
      if (currency == ModultradeLibrary.Currencies.ETH) {
        cancelEth(cancelFee);
      }
      if (currency == ModultradeLibrary.Currencies.MTR) {
        cancelMtr(cancelFee);
      }
    }
    state = ModultradeLibrary.ProposalStates.Canceled;
    CanceledEvent(id, state, buyer, this.balance);
    modultrade.fireCancelProposalEvent(address(this), id);
  }

  function cancelEth(uint cancelFee) private {
    uint _fee = cancelFee;
    if (cancelFee > this.balance) {
      _fee = this.balance;
    }
    feeAddress.transfer(_fee);
    if (this.balance > 0 && buyer != address(0)) {
      buyer.transfer(this.balance);
    }
  }

  function cancelMtr(uint cancelFee) private {
    uint _fee = cancelFee;
    uint _balance = getBalance();
    if (cancelFee > _balance) {
      _fee = _balance;
    }
    mtrContract.transfer(feeAddress, _fee);
    _balance = getBalance();
    if (_balance > 0 && buyer != address(0)) {
      mtrContract.transfer(buyer, _balance);
    }
  }

  function getBalance() public constant returns (uint) {
    if (currency == ModultradeLibrary.Currencies.MTR) {
      return mtrContract.balanceOf(address(this));
    }

    return this.balance;
  }
}

// File: contracts/Modultrade.sol

contract Modultrade is OracleOwnable, Deployer {

  address public mtrContractAddress;

  ModultradeStorage public modultradeStorage;

  event ProposalCreatedEvent(uint _id, address _proposal);

  event PaidProposalEvent (address _proposal, uint _id);
  event CancelProposalEvent (address _proposal, uint _id);
  event CloseProposalEvent (address _proposal, uint _id);
  event DeliveryProposalEvent (address _proposal, uint _id);

  event LogEvent (address _addr, string _log, uint _i);

  function Modultrade(address _owner, address _oracle, address _mtrContractAddress, address _storageAddress) public {
    transferOwnership(_owner);
    setOracle(_oracle);
    mtrContractAddress = _mtrContractAddress;
    modultradeStorage = ModultradeStorage(_storageAddress);
  }

  function createProposal(
  address seller,
  uint id,
  string title,
  uint price,
  ModultradeLibrary.Currencies currency,
  uint units,
  uint total,
  uint validUntil,
  uint fee,
  address feeAddress
  ) public onlyOracleOrOwner {
    ModultradeProposal proposal = new ModultradeProposal(address(this), seller, mtrContractAddress);
    LogEvent (address(proposal), 'ModultradeProposal', 1);
    proposal.setProposal(id, title, price, currency, units, total, validUntil);
    proposal.setFee(fee, feeAddress);
    proposal.setOracle(oracle);
    proposal.transferOwnership(owner);

    modultradeStorage.insertProposal(seller, id, address(proposal));
    ProposalCreatedEvent(proposal.id(), address(proposal));
  }


  function transferStorage(address _owner) public onlyOracleOrOwner {
    modultradeStorage.transferOwnership(_owner);
  }

  function firePaidProposalEvent(address proposal, uint id) public {
    var _proposal = modultradeStorage.getProposalById(id);
    require(_proposal == proposal);
    PaidProposalEvent(proposal, id);
  }

  function fireCancelProposalEvent(address proposal, uint id) public {
    var _proposal = modultradeStorage.getProposalById(id);
    require(_proposal == proposal);
    CancelProposalEvent(proposal, id);
  }

  function fireCloseProposalEvent(address proposal, uint id) public {
    var _proposal = modultradeStorage.getProposalById(id);
    require(_proposal == proposal);
    CloseProposalEvent(proposal, id);
  }

  function fireDeliveryProposalEvent(address proposal, uint id) public {
    var _proposal = modultradeStorage.getProposalById(id);
    require(_proposal == proposal);
    DeliveryProposalEvent(proposal, id);
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"seller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenFallbackData","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cancelFee","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"title","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"buyer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOracle","type":"address"}],"name":"setOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"units","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_title","type":"string"},{"name":"_price","type":"uint256"},{"name":"_currency","type":"uint8"},{"name":"_units","type":"uint256"},{"name":"_total","type":"uint256"},{"name":"_validUntil","type":"uint256"}],"name":"setProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"payDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"}],"name":"paid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"id","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"},{"name":"_feeAddress","type":"address"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validUntil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currency","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deliveryId","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_deliveryId","type":"string"}],"name":"delivery","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_modultrade","type":"address"},{"name":"_seller","type":"address"},{"name":"_mtrContractAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_state","type":"uint8"}],"name":"CreatedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_state","type":"uint8"},{"indexed":false,"name":"_buyer","type":"address"}],"name":"PaidEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_state","type":"uint8"},{"indexed":false,"name":"_deliveryId","type":"string"}],"name":"DeliveryEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_state","type":"uint8"},{"indexed":false,"name":"_seller","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ClosedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_id","type":"uint256"},{"indexed":false,"name":"_state","type":"uint8"},{"indexed":false,"name":"_buyer","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"CanceledEvent","type":"event"}]

Deployed Bytecode

0x60606040526004361061015b5763ffffffff60e060020a60003504166308551a53811461016557806312065fe0146101945780631e626456146101b95780632ddbd13a146102435780633b66d02b1461025657806340e58ee514610278578063412753581461028e57806343d726d6146102a15780634a79d50c146102b457806364edfbf01461015b5780637150d8ae146102c75780637adbf973146102da5780637dc0d1d0146102f95780638da5cb5b1461030c578063976a84351461031f5780639a3f3ae5146103325780639b332a91146103a3578063a035b1fe146103b6578063a340cf79146103c9578063af640d0f146103e8578063b4f2e8b8146103fb578063c0ee0b8a1461041d578063c19d93fb14610482578063ddac6654146104b9578063ddca3f43146104cc578063e5a6b10f146104df578063ec29781e14610502578063f2fde38b14610515578063fa26fe3214610534575b610163610585565b005b341561017057600080fd5b6101786105bc565b604051600160a060020a03909116815260200160405180910390f35b341561019f57600080fd5b6101a76105cb565b60405190815260200160405180910390f35b34156101c457600080fd5b6101cc610671565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102085780820151838201526020016101f0565b50505050905090810190601f1680156102355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561024e57600080fd5b6101a761070f565b341561026157600080fd5b610163600160a060020a0360043516602435610715565b341561028357600080fd5b610163600435610723565b341561029957600080fd5b6101786108f8565b34156102ac57600080fd5b610163610907565b34156102bf57600080fd5b6101cc610ac2565b34156102d257600080fd5b610178610b2d565b34156102e557600080fd5b610163600160a060020a0360043516610b3c565b341561030457600080fd5b610178610bad565b341561031757600080fd5b610178610bbc565b341561032a57600080fd5b6101a7610bcb565b341561033d57600080fd5b610163600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460ff60208201351694506040810135935060608101359250608001359050610bd1565b34156103ae57600080fd5b6101a7610c71565b34156103c157600080fd5b6101a7610c77565b34156103d457600080fd5b610163600160a060020a0360043516610c7d565b34156103f357600080fd5b6101a7610cd2565b341561040657600080fd5b610163600435600160a060020a0360243516610cd8565b341561042857600080fd5b61016360048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d5f95505050505050565b341561048d57600080fd5b610495610d7d565b604051808260048111156104a557fe5b60ff16815260200191505060405180910390f35b34156104c457600080fd5b6101a7610d86565b34156104d757600080fd5b6101a7610d8c565b34156104ea57600080fd5b6104f2610d92565b604051808260018111156104a557fe5b341561050d57600080fd5b6101cc610d9b565b341561052057600080fd5b610163600160a060020a0360043516610e06565b341561053f57600080fd5b61016360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610e5d95505050505050565b600060075460ff16600181111561059857fe5b146105a257600080fd5b6009543410156105b157600080fd5b6105ba33611019565b565b600254600160a060020a031681565b6000600160075460ff1660018111156105e057fe5b141561066157601054600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561063f57600080fd5b6102c65a03f1151561065057600080fd5b50505060405180519050905061066e565b50600160a060020a033016315b90565b60128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107075780601f106106dc57610100808354040283529160200191610707565b820191906000526020600020905b8154815290600101906020018083116106ea57829003601f168201915b505050505081565b60095481565b61071f8282611147565b5050565b60015460009033600160a060020a0390811691161480610751575060005433600160a060020a039081169116145b151561075c57600080fd5b6003600b5460ff16600481111561076f57fe5b141561077a57600080fd5b6004600b5460ff16600481111561078d57fe5b141561079857600080fd5b6107a06105cb565b905060008111156107ef57600060075460ff1660018111156107be57fe5b14156107cd576107cd82611197565b600160075460ff1660018111156107e057fe5b14156107ef576107ef8261124c565b600b805460ff1916600490811791829055546003547f950d924bfd844a06a0d57aa31b13eb08e872c53d40e08145cf7dc21ad9eeeceb9260ff1690600160a060020a03908116903016316040518085815260200184600481111561084f57fe5b60ff16815260200183600160a060020a0316600160a060020a0316815260200182815260200194505050505060405180910390a1601154600454600160a060020a039091169063770f75b790309060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156108e057600080fd5b6102c65a03f115156108f157600080fd5b5050505050565b600f54600160a060020a031681565b60015433600160a060020a0390811691161480610932575060005433600160a060020a039081169116145b151561093d57600080fd5b6003600b5460ff16600481111561095057fe5b141561095b57600080fd5b6004600b5460ff16600481111561096e57fe5b141561097957600080fd5b600060075460ff16600181111561098c57fe5b141561099a5761099a611396565b600160075460ff1660018111156109ad57fe5b14156109bb576109bb611413565b600b805460ff1916600317908190556004546002547f9efa430a22c488c7a5d0eccd5d357027831aa633583754913833e93694f9737b9260ff1690600160a060020a039081169030163160405180858152602001846004811115610a1b57fe5b60ff16815260200183600160a060020a0316600160a060020a0316815260200182815260200194505050505060405180910390a1601154600454600160a060020a039091169063dccc6c9490309060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610aac57600080fd5b6102c65a03f11515610abd57600080fd5b505050565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107075780601f106106dc57610100808354040283529160200191610707565b600354600160a060020a031681565b60015433600160a060020a0390811691161480610b67575060005433600160a060020a039081169116145b1515610b7257600080fd5b600160a060020a03811615610baa576001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b600154600160a060020a031681565b600054600160a060020a031681565b60085481565b60015433600160a060020a0390811691161480610bfc575060005433600160a060020a039081169116145b1515610c0757600080fd5b6000600b5460ff166004811115610c1a57fe5b14610c2457600080fd5b60048790556005868051610c3c92916020019061152d565b5060068590556007805485919060ff191660018381811115610c5a57fe5b0217905550600892909255600955600a5550505050565b600c5481565b60065481565b60015433600160a060020a0390811691161480610ca8575060005433600160a060020a039081169116145b1515610cb357600080fd5b600954610cbe6105cb565b1015610cc957600080fd5b610baa81611019565b60045481565b60015433600160a060020a0390811691161480610d03575060005433600160a060020a039081169116145b1515610d0e57600080fd5b6000600b5460ff166004811115610d2157fe5b14610d2b57600080fd5b600e91909155600f805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b6012818051610d7292916020019061152d565b50610abd8383611147565b600b5460ff1681565b600a5481565b600e5481565b60075460ff1681565b600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107075780601f106106dc57610100808354040283529160200191610707565b60005433600160a060020a03908116911614610e2157600080fd5b600160a060020a03811615610baa5760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b60015433600160a060020a0390811691161480610e88575060005433600160a060020a039081169116145b1515610e9357600080fd5b6001600b5460ff166004811115610ea657fe5b14610eb057600080fd5b600d818051610ec392916020019061152d565b50600b805460ff1916600217908190556004547f3f63a1d75a702ad3ae7690513a3c2d5af5fbb0f3d928b1997a2ae19ac2b2a4239160ff16600d60405180848152602001836004811115610f1357fe5b60ff1681526040828203810160208301908152845460026001821615610100026000190190911604918301829052916060019084908015610f955780601f10610f6a57610100808354040283529160200191610f95565b820191906000526020600020905b815481529060010190602001808311610f7857829003601f168201915b505094505050505060405180910390a1601154600454600160a060020a0390911690633339451b90309060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561100257600080fd5b6102c65a03f1151561101357600080fd5b50505050565b6000600b5460ff16600481111561102c57fe5b1461103657600080fd5b600b805460ff19166001179081905560038054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19909216919091179182905542600c556004547fea9001d86b80688d0e0a3392a6238aac96f42849b3bb4d0c9f268c822a4e3f0493909260ff9091169116604051808481526020018360048111156110bd57fe5b60ff16815260200182600160a060020a0316600160a060020a03168152602001935050505060405180910390a1601154600454600160a060020a0390911690633103fa2690309060405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561100257600080fd5b600160075460ff16600181111561115a57fe5b1461116457600080fd5b60105433600160a060020a0390811691161461117f57600080fd5b60095481101561118e57600080fd5b61071f82611019565b80600160a060020a033016318111156111b75750600160a060020a033016315b600f54600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156111ea57600080fd5b600030600160a060020a03163111801561120e5750600354600160a060020a031615155b1561071f57600354600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561071f57600080fd5b8060006112576105cb565b905080831115611265578091505b601054600f54600160a060020a039182169163a9059cbb91168460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112cb57600080fd5b6102c65a03f115156112dc57600080fd5b50505060405180519050506112ef6105cb565b905060008111801561130b5750600354600160a060020a031615155b15610abd57601054600354600160a060020a039182169163a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561137657600080fd5b6102c65a03f1151561138757600080fd5b50505060405180515050505050565b6000600e5411156113da57600f54600e54600160a060020a039091169080156108fc0290604051600060405180830381858888f1935050505015156113da57600080fd5b600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156105ba57600080fd5b6000600e5411156114a357601054600f54600e54600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561148757600080fd5b6102c65a03f1151561149857600080fd5b505050604051805150505b601054600254600160a060020a039182169163a9059cbb91166114c46105cb565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561151057600080fd5b6102c65a03f1151561152157600080fd5b50505060405180515050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061156e57805160ff191683800117855561159b565b8280016001018555821561159b579182015b8281111561159b578251825591602001919060010190611580565b506115a79291506115ab565b5090565b61066e91905b808211156115a757600081556001016115b15600a165627a7a72305820b6273084c6f54bd3ad892cea9cf6d06aa8f14c54d4ee750f7d8a2dcc858f6a830029

Swarm Source

bzzr://b6273084c6f54bd3ad892cea9cf6d06aa8f14c54d4ee750f7d8a2dcc858f6a83

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  ]
[ 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.