Contract 0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf873

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0xdca6f17b8f6d969457a49d9613acd5b6bf2b4b3f47f2483d59aa6ae9362b20994129466172 days 19 hrs ago0xd41826e9e18037ebe603a292f32a32c32328e6a7 IN  0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether0.00130836
0x1d46b3b8a55bfc8c7bf632960744c4a10f05fc6b9a80abe2cae8b53ca9285d2a4129458172 days 19 hrs ago0xd41826e9e18037ebe603a292f32a32c32328e6a7 IN  0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether0.00130638
0xdc184d9c1061e4c9973c30d39df8f05b1009d250a86036f560ec59b68336f9fc4129455172 days 19 hrs ago0xd41826e9e18037ebe603a292f32a32c32328e6a7 IN  Contract Creation0 Ether0.01211265
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x29bac9f74fbbc55fdd529e01d0adba72c82968aee773dd47f439c98a7d2f532752080624 days 19 hrs ago0x6cc7e97501efdd1fda736ae2367ac5ad4000616d0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0xde576050c38822b51d49929cfef00b99cb4d6c5bb9c55e55248472a98f91fe1b52080084 days 19 hrs ago0x9c2db6772d99c9118e97d38986633f70774046c20x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x5bd560d956204f3624633842f4848c965b04891a9548742a815eed4ae3ab7fef51952976 days 14 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x5bd560d956204f3624633842f4848c965b04891a9548742a815eed4ae3ab7fef51952976 days 14 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
0x5bd560d956204f3624633842f4848c965b04891a9548742a815eed4ae3ab7fef51952976 days 14 hrs ago0xc180d882cbfe2d38b38915bea0a53fe55473daec0x4d0e3e6beec9e37eed69218f5e9d2b570dcbf8730 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: ContractAddressesManager
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.23;

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() 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 relinquish control of the contract.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: contracts/VpfFactoryInterface.sol

contract VpfFactoryInterface {
    function generateNext() public;
    function isPaused() public view returns(bool);
}

// File: contracts/oracles/OracleInterface.sol

contract OracleInterface {
    function request(
        bytes32 _assetHash,
        uint _time,
        uint8 _decimalPoints,
        uint _gasLimit) public;
}

// File: contracts/PhenomenonsContract.sol

contract PhenomenonsContract is Ownable {

    struct Phenomenon {
        string mnemonic;
        string name;
        string description;
        string category;
        uint8 valueDecimalPlaces;
        bool enabled;
        bool exists;
    }

    mapping(bytes32 => Phenomenon) public phenomenons;
    string[] public mnemonics;

    event PhenomenonAdd(bytes32 hash);
    event PhenomenonDisable(bytes32 hash);
    event PhenomenonEnable(bytes32 hash);

    function addPhenomenon(
        string _mnemonic,
        string _name,
        string _description,
        string _category,
        uint8 _valueDecimalPlaces
    ) public onlyOwner
    {
        bytes32 hash = keccak256(abi.encodePacked(_mnemonic));
        require(bytes(phenomenons[hash].mnemonic).length == 0, "Phenomenon already exists!");

        Phenomenon memory phenomenon = Phenomenon(
            _mnemonic,
            _name,
            _description,
            _category,
            _valueDecimalPlaces,
            true,
            true
        );

        phenomenons[hash] = phenomenon;
        mnemonics.push(_mnemonic);

        emit PhenomenonAdd(hash);
    }

    function disablePhenomenon(bytes32 _hash) public onlyOwner {
        require(phenomenons[_hash].enabled == true);

        phenomenons[_hash].enabled = false;

        emit PhenomenonDisable(_hash);
    }

    function enablePhenomenon(bytes32 _hash) public onlyOwner {
        require(phenomenons[_hash].exists == true);
        require(phenomenons[_hash].enabled == false);

        phenomenons[_hash].enabled = true;

        emit PhenomenonEnable(_hash);
    }

    function mnemonicsCount() public view returns(uint) {
        return mnemonics.length;
    }

    function isEnabled(bytes32 _hash) public view returns(bool) {
        return phenomenons[_hash].enabled;
    }

    function decimalPoints(bytes32 _hash) public view returns(uint8) {
        return phenomenons[_hash].valueDecimalPlaces;
    }
}

// File: contracts/ContractAddressesManager.sol

contract ContractAddressesManager is Ownable {

    OracleInterface public oracle;
    PhenomenonsContract public phenomenonsContract;
    mapping(address => bool) public factories;

    event AddFactory(address _factory);
    event RemoveFactory(address _factory);

    function addFactory(VpfFactoryInterface _factory) public onlyOwnerOrigin {
        factories[_factory] = true;
        emit AddFactory(_factory);
    }

    function removeFactory(VpfFactoryInterface _factory) public onlyOwner {
        factories[_factory] = false;
        emit RemoveFactory(_factory);
    }

    function setOracle(OracleInterface _oracle) public onlyOwner {
        oracle = _oracle;
    }

    function setPhenomenonsContract(PhenomenonsContract _phenomenonsContract) public onlyOwner {
        phenomenonsContract = _phenomenonsContract;
    }

    modifier onlyOwnerOrigin() {
        require(tx.origin == owner);
        _;
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"phenomenonsContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_factory","type":"address"}],"name":"addFactory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_phenomenonsContract","type":"address"}],"name":"setPhenomenonsContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_factory","type":"address"}],"name":"removeFactory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","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":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"factories","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_factory","type":"address"}],"name":"AddFactory","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_factory","type":"address"}],"name":"RemoveFactory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Contract Creation Code
608060405260008054600160a060020a031916331790556104db806100256000396000f3006080604052600436106100a35763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631ed6ea6d81146100a857806329ce1ec5146100d957806346b9192d146100fc5780634b37c73f1461011d578063715018a61461013e5780637adbf973146101535780637dc0d1d0146101745780638da5cb5b14610189578063f2fde38b1461019e578063fab52689146101bf575b600080fd5b3480156100b457600080fd5b506100bd6101f4565b60408051600160a060020a039092168252519081900360200190f35b3480156100e557600080fd5b506100fa600160a060020a0360043516610203565b005b34801561010857600080fd5b506100fa600160a060020a0360043516610275565b34801561012957600080fd5b506100fa600160a060020a03600435166102bb565b34801561014a57600080fd5b506100fa61032a565b34801561015f57600080fd5b506100fa600160a060020a0360043516610396565b34801561018057600080fd5b506100bd6103dc565b34801561019557600080fd5b506100bd6103eb565b3480156101aa57600080fd5b506100fa600160a060020a03600435166103fa565b3480156101cb57600080fd5b506101e0600160a060020a036004351661041d565b604080519115158252519081900360200190f35b600254600160a060020a031681565b600054600160a060020a0316321461021a57600080fd5b600160a060020a038116600081815260036020908152604091829020805460ff19166001179055815192835290517f5a8fb443d09cf1426e80f80dd509757d71d4687674ab4adad906c5e2b6e1e62c9281900390910190a150565b600054600160a060020a0316331461028c57600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146102d257600080fd5b600160a060020a038116600081815260036020908152604091829020805460ff19169055815192835290517f3d4e7057f9f992c8d86344002642adf5d5cd33816b302134e7ef5e0f045a6e789281900390910190a150565b600054600160a060020a0316331461034157600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146103ad57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b600054600160a060020a031681565b600054600160a060020a0316331461041157600080fd5b61041a81610432565b50565b60036020526000908152604090205460ff1681565b600160a060020a038116151561044757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a7230582009f97aba2bb71c4cc492824645b648735452393430d34871635d2b8d366bcc010029


   Swarm Source:
bzzr://09f97aba2bb71c4cc492824645b648735452393430d34871635d2b8d366bcc01
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward