Latest 9 txns

TxHash Age From To Value [TxFee]
0x7f57172e8ac4b24473c4144f7090b98e8ad2f3ad813e515be0131a52a1cc870982 days 3 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000047409
0xba166e0a7057806e6a4aa17d231159815f6c37df4710590416884ec3e6cc4ffb82 days 4 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000032409
0xd6e5aac95eafefed461603a97931c8f447954f0db15f67a306fba88ead3b502e82 days 4 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000047409
0x08bd29e5ede561d5e6bdd0d02c2f8c3c15f9237cb959a19910108d77eb323f8783 days 20 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000047409
0xa22c859170c6d2af45bb300662bd6ee46d7302e20e69a593c06466e3021bb34f83 days 20 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000047345
0x7f654b9722f71c4cc77c0214cb1b7a163a744e36d652f2b0618c070b8c3bbeac83 days 20 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000047409
0x5ae205bd9cd3ecde26eb88bb0538a23430622f76f8e4283a4dd8798cb5c5e18984 days 3 hrs ago0x1f07673e487be806391c4a3822d820b8e8e5d78a  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.00019834
0xd96544f322089db618ef7aac0004d85ff31ecfca672a1d0460c54f5bfe2e806991 days 8 hrs ago0x4d49e57fa071ebf7a34168a253c1f057b8a964a9  IN   0x8500a619dc5b8cba8b7b792e3eab079c8f0f676a0 Ether0.000045168
0xbfaeef92f6403d04c1c0403fc03ec31874c82c3b9d3730418abc80a8149138f091 days 8 hrs ago0x4d49e57fa071ebf7a34168a253c1f057b8a964a9  IN    Contract Creation0 Ether0.001308431
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: XFTNotary
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

// File: contracts/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

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

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts 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;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

// File: contracts/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 private _owner;

  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;
    emit OwnershipTransferred(address(0), _owner);
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

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

  /**
   * @return true if the account is the owner of the contract.
   */
  function isOwner(address account) public view returns(bool) {
    return account == _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
  {
    _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/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Paused();
  event Unpaused();

  bool private _paused;

  constructor() public {
    _paused = false;
  }

  /**
   * @return true if the contract is paused, false otherwise.
   */
  function paused() public view returns(bool) {
    return _paused;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!_paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(_paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause()
    public
    onlyOwner
    whenNotPaused
  {
    _paused = true;
    emit Paused();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause()
    public
    onlyOwner
    whenPaused
  {
    _paused = false;
    emit Unpaused();
  }
}

// File: contracts/Operable.sol

/**
 * @title Operable
 * @dev Base contract that allows the owner to enforce access control over certain
 * operations by adding or removing operator addresses.
 */
contract Operable is Pausable {
  event OperatorAdded(address indexed account);
  event OperatorRemoved(address indexed account);

  mapping (address => bool) private _operators;

  constructor() public {
    _addOperator(msg.sender);
  }

  modifier onlyOperator() {
    require(isOperator(msg.sender));
    _;
  }

  function isOperator(address account)
    public
    view
    returns (bool) 
  {
    require(account != address(0));
    return _operators[account];
  }

  function addOperator(address account)
    public
    onlyOwner
  {
    _addOperator(account);
  }

  function removeOperator(address account)
    public
    onlyOwner
  {
    _removeOperator(account);
  }

  function _addOperator(address account)
    internal
  {
    require(account != address(0));
    _operators[account] = true;
    emit OperatorAdded(account);
  }

  function _removeOperator(address account)
    internal
  {
    require(account != address(0));
    _operators[account] = false;
    emit OperatorRemoved(account);
  }
}

// File: contracts/TimestampNotary.sol

contract TimestampNotary is Operable {
  struct Time {
    uint32 declared;
    uint32 recorded;
  }
  mapping (bytes32 => Time) _hashTime;

  event Timestamp(
    bytes32 indexed hash,
    uint32 declaredTime,
    uint32 recordedTime
  );

  /**
   * @dev Allows an operator to timestamp a new hash value.
   * @param hash bytes32 The hash value to be stamped in the contract storage
   * @param declaredTime uint The timestamp associated with the given hash value
   */
  function addTimestamp(bytes32 hash, uint32 declaredTime)
    public
    onlyOperator
    whenNotPaused
    returns (bool)
  {
    _addTimestamp(hash, declaredTime);
    return true;
  }

  /**
   * @dev Registers the timestamp hash value in the contract storage, along with
   * the current and declared timestamps.
   * @param hash bytes32 The hash value to be registered
   * @param declaredTime uint32 The declared timestamp of the hash value
   */
  function _addTimestamp(bytes32 hash, uint32 declaredTime) internal {
    uint32 recordedTime = uint32(block.timestamp);
    _hashTime[hash] = Time(declaredTime, recordedTime);
    emit Timestamp(hash, declaredTime, recordedTime);
  }

  /**
   * @dev Allows anyone to verify the declared timestamp for any given hash.
   */
  function verifyDeclaredTime(bytes32 hash)
    public
    view
    returns (uint32)
  {
    return _hashTime[hash].declared;
  }

  /**
   * @dev Allows anyone to verify the recorded timestamp for any given hash.
   */
  function verifyRecordedTime(bytes32 hash)
    public
    view
    returns (uint32)
  {
    return _hashTime[hash].recorded;
  }
}

// File: contracts/LinkedToken.sol

contract LinkedTokenAbstract {
  function totalSupply() public view returns (uint256);
  function balanceOf(address account) public view returns (uint256);
}


contract LinkedToken is Pausable {
  address internal _token;
  event TokenChanged(address indexed token);
  
  /**
   * @dev Returns the address of the associated token contract.
   */
  function tokenAddress() public view returns (address) {
    return _token;
  }

  /**
   * @dev Allows the current owner to change the address of the associated token contract.
   * @param token address The address of the new token contract
   */
  function setToken(address token) 
    public
    onlyOwner
    whenPaused
    returns (bool)
  {
    _setToken(token);
    emit TokenChanged(token);
    return true;
  }

  /**
   * @dev Changes the address of the associated token contract
   * @param token address The address of the new token contract
   */
  function _setToken(address token) internal {
    require(token != address(0));
    _token = token;
  }
}

// File: contracts/AssetNotary.sol

contract AssetNotary is TimestampNotary, LinkedToken {
  using SafeMath for uint256;

  bytes8[] private _assetList;
  mapping (bytes8 => uint8) private _assetDecimals;
  mapping (bytes8 => uint256) private _assetBalances;

  event AssetBalanceUpdate(
    bytes8 indexed assetId,
    uint256 balance
  );

  function registerAsset(bytes8 assetId, uint8 decimals)
    public
    onlyOperator
    returns (bool)
  {
    require(decimals > 0);
    require(decimals <= 32);
    _assetDecimals[assetId] = decimals;
    _assetList.push(assetId);
    return true;
  }

  function assetList()
    public
    view
    returns (bytes8[])
  {
    return _assetList;
  }

  function getAssetId(string name)
    public
    pure
    returns (bytes8)
  {
    return bytes8(keccak256(abi.encodePacked(name)));
  }

  function assetDecimals(bytes8 assetId)
    public
    view
    returns (uint8)
  {
    return _assetDecimals[assetId];
  }

  function assetBalance(bytes8 assetId)
    public
    view
    returns (uint256)
  {
    return _assetBalances[assetId];
  }

  function updateAssetBalances(bytes8[] assets, uint256[] balances)
    public
    onlyOperator
    whenNotPaused
    returns (bool)
  {
    uint assetsLength = assets.length;
    require(assetsLength > 0);
    require(assetsLength == balances.length);
    
    for (uint i=0; i<assetsLength; i++) {
      require(_assetDecimals[assets[i]] > 0);
      _assetBalances[assets[i]] = balances[i];
      emit AssetBalanceUpdate(assets[i], balances[i]);
    }
    return true;
  }

  function verifyUserBalance(address user, string assetName)
    public
    view
    returns (uint256)
  {
    LinkedTokenAbstract token = LinkedTokenAbstract(_token);
    uint256 totalShares = token.totalSupply();
    require(totalShares > 0);
    uint256 userShares = token.balanceOf(user);
    bytes8 assetId = getAssetId(assetName);
    return _assetBalances[assetId].mul(userShares) / totalShares;
  }
}

// File: contracts/XFTNotary.sol

contract XFTNotary is AssetNotary {
  string public constant name = 'XFT Asset Notary';
  string public constant version = '0.1';
  
  /*
   * @dev Links the Notary contract with the Token contract.
   */
  constructor(address token) public {
    _setToken(token);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"getAssetId","outputs":[{"name":"","type":"bytes8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"setToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"assetId","type":"bytes8"}],"name":"assetBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"assetId","type":"bytes8"},{"name":"decimals","type":"uint8"}],"name":"registerAsset","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"assetId","type":"bytes8"}],"name":"assetDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"verifyDeclaredTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assets","type":"bytes8[]"},{"name":"balances","type":"uint256[]"}],"name":"updateAssetBalances","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"}],"name":"verifyRecordedTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"hash","type":"bytes32"},{"name":"declaredTime","type":"uint32"}],"name":"addTimestamp","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"assetList","outputs":[{"name":"","type":"bytes8[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"assetName","type":"string"}],"name":"verifyUserBalance","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"},{"inputs":[{"name":"token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"assetId","type":"bytes8"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"AssetBalanceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"}],"name":"TokenChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"hash","type":"bytes32"},{"indexed":false,"name":"declaredTime","type":"uint32"},{"indexed":false,"name":"recordedTime","type":"uint32"}],"name":"Timestamp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"OperatorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"OperatorRemoved","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b50604051602080611294833981016040819052905160008054600160a060020a03191633178082559192600160a060020a0392909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36000805460a060020a60ff021916905561008e336401000000006100a6810204565b6100a08164010000000061010a810204565b50610141565b600160a060020a03811615156100bb57600080fd5b600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9190a250565b600160a060020a038116151561011f57600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b611144806101506000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101375780630fed73e2146101c1578063144fa6d7146102375780632f54bf6e1461026c5780633f4ba83a1461028d57806354fd4d50146102a457806357637a5d146102b95780635c975abb146102ed5780636d70f7ae14610302578063733b096d146103235780637d1e2e7a1461034b5780638456cb59146103835780638da5cb5b146103985780639870d7fe146103c95780639d76ea58146103ea578063a971d9bb146103ff578063ac8a584a14610430578063bab19fb514610451578063c539ab71146104df578063c800756f146104f7578063e372f03a14610518578063e56b7b091461057d578063f2fde38b146105e4575b600080fd5b34801561014357600080fd5b5061014c610605565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018657818101518382015260200161016e565b50505050905090810190601f1680156101b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101cd57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021a94369492936024939284019190819084018382808284375094975061063c9650505050505050565b60408051600160c060020a03199092168252519081900360200190f35b34801561024357600080fd5b50610258600160a060020a0360043516610706565b604080519115158252519081900360200190f35b34801561027857600080fd5b50610258600160a060020a0360043516610779565b34801561029957600080fd5b506102a261078d565b005b3480156102b057600080fd5b5061014c610800565b3480156102c557600080fd5b506102db600160c060020a031960043516610837565b60408051918252519081900360200190f35b3480156102f957600080fd5b50610258610853565b34801561030e57600080fd5b50610258600160a060020a0360043516610863565b34801561032f57600080fd5b50610258600160c060020a03196004351660ff60243516610899565b34801561035757600080fd5b5061036d600160c060020a031960043516610977565b6040805160ff9092168252519081900360200190f35b34801561038f57600080fd5b506102a2610996565b3480156103a457600080fd5b506103ad610a0e565b60408051600160a060020a039092168252519081900360200190f35b3480156103d557600080fd5b506102a2600160a060020a0360043516610a1d565b3480156103f657600080fd5b506103ad610a3d565b34801561040b57600080fd5b50610417600435610a4c565b6040805163ffffffff9092168252519081900360200190f35b34801561043c57600080fd5b506102a2600160a060020a0360043516610a64565b34801561045d57600080fd5b506040805160206004803580820135838102808601850190965280855261025895369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610a819650505050505050565b3480156104eb57600080fd5b50610417600435610c02565b34801561050357600080fd5b5061025860043563ffffffff60243516610c22565b34801561052457600080fd5b5061052d610c62565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610569578181015183820152602001610551565b505050509050019250505060405180910390f35b34801561058957600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102db958335600160a060020a0316953695604494919390910191908190840183828082843750949750610d109650505050505050565b3480156105f057600080fd5b506102a2600160a060020a0360043516610ea1565b60408051808201909152601081527f584654204173736574204e6f7461727900000000000000000000000000000000602082015281565b6000816040516020018082805190602001908083835b602083106106715780518252601f199092019160209182019101610652565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106106d45780518252601f1990920191602091820191016106b5565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600061071133610779565b151561071c57600080fd5b60005460a060020a900460ff16151561073457600080fd5b61073d82610ebe565b604051600160a060020a038316907f5d108ca248943e98e1886bbc2c38beda701271994a14354258a11692b81b73cf90600090a2506001919050565b600054600160a060020a0390811691161490565b61079633610779565b15156107a157600080fd5b60005460a060020a900460ff1615156107b957600080fd5b6000805474ff0000000000000000000000000000000000000000191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b60408051808201909152600381527f302e310000000000000000000000000000000000000000000000000000000000602082015281565b600160c060020a03191660009081526006602052604090205490565b60005460a060020a900460ff1690565b6000600160a060020a038216151561087a57600080fd5b50600160a060020a031660009081526001602052604090205460ff1690565b60006108a433610863565b15156108af57600080fd5b600060ff8316116108bf57600080fd5b602060ff831611156108d057600080fd5b50600160c060020a031982166000908152600560205260408120805460ff841660ff199091161790556004805460018181018355928290529081047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547801000000000000000000000000000000000000000000000000860460086003909416939093026101000a92830267ffffffffffffffff909302191691909117905592915050565b600160c060020a03191660009081526005602052604090205460ff1690565b61099f33610779565b15156109aa57600080fd5b60005460a060020a900460ff16156109c157600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600054600160a060020a031690565b610a2633610779565b1515610a3157600080fd5b610a3a81610f02565b50565b600354600160a060020a031690565b60009081526002602052604090205463ffffffff1690565b610a6d33610779565b1515610a7857600080fd5b610a3a81610f66565b6000806000610a8f33610863565b1515610a9a57600080fd5b60005460a060020a900460ff1615610ab157600080fd5b8451915060008211610ac257600080fd5b83518214610acf57600080fd5b5060005b81811015610bf7576000600560008784815181101515610aef57fe5b6020908102909101810151600160c060020a03191682528101919091526040016000205460ff1611610b2057600080fd5b8381815181101515610b2e57fe5b90602001906020020151600660008784815181101515610b4a57fe5b6020908102909101810151600160c060020a0319168252810191909152604001600020558451859082908110610b7c57fe5b9060200190602002015177ffffffffffffffffffffffffffffffffffffffffffffffff19167f68d0a438d383ea56d3f790002e08fc5addfd80379440b9a3d5b9c1ab41fcb98b8583815181101515610bd057fe5b906020019060200201516040518082815260200191505060405180910390a2600101610ad3565b506001949350505050565b600090815260026020526040902054640100000000900463ffffffff1690565b6000610c2d33610863565b1515610c3857600080fd5b60005460a060020a900460ff1615610c4f57600080fd5b610c598383610fc4565b50600192915050565b60606004805480602002602001604051908101604052809291908181526020018280548015610d0657602002820191906000526020600020906000905b82829054906101000a900478010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060080190602082600701049283019260010382029150808411610c9f5790505b5050505050905090565b600354604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169183918291829185916318160ddd91600480830192602092919082900301818787803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d6020811015610da157600080fd5b5051925060008311610db257600080fd5b83600160a060020a03166370a08231886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610e2657600080fd5b505af1158015610e3a573d6000803e3d6000fd5b505050506040513d6020811015610e5057600080fd5b50519150610e5d8661063c565b600160c060020a031981166000908152600660205260409020549091508390610e8c908463ffffffff61106216565b811515610e9557fe5b04979650505050505050565b610eaa33610779565b1515610eb557600080fd5b610a3a8161109b565b600160a060020a0381161515610ed357600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0381161515610f1757600080fd5b600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d9190a250565b600160a060020a0381161515610f7b57600080fd5b600160a060020a038116600081815260016020526040808220805460ff19169055517f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d9190a250565b60408051808201825263ffffffff83811680835242808316602080860182815260008a81526002835288902096518754915163ffffffff199092169087161767ffffffff0000000019166401000000009190961602949094179094558451918252918101929092528251909285927f2c0e11cc9aaa4a90dc5a0f4842b5c2e54ae073611f136201bcdcd7d45351bd1d929081900390910190a2505050565b6000808315156110755760009150611094565b5082820282848281151561108557fe5b041461109057600080fd5b8091505b5092915050565b600160a060020a03811615156110b057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820b19d205bdba678ec2b26dda2160ae42287fab6e4c91cbbc82ed0c34f4b2e7c280029000000000000000000000000cf7d351fad887ef1dc6eeeeeba8b76a4d5647125

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cf7d351fad887ef1dc6eeeeeba8b76a4d5647125


   Swarm Source:
bzzr://b19d205bdba678ec2b26dda2160ae42287fab6e4c91cbbc82ed0c34f4b2e7c28

 

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