Contract 0xf40c5e190a608b6f8c0bf2b38c9506b327941402

 

Contract Overview

Balance:
1.01 Ether

EtherValue:
$139.71 (@ $138.33/ETH)
TxHash Block Age From To Value [TxFee]
0x217210a8eb1317a53964d76440cc47f872af5d364bc759e63390d499e406907873546147 days 14 hrs ago0x5a57dd9c623e1403af1d810673183d89724a4e0c IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00052737
0x62ef1915b4b2bc0892ca4e5bc176379b6afaa01c07f7b74a7e8600705836c89873537067 days 17 hrs ago0x49fb9ba5754ad6660a7ecab9d6587be46eb50376 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.000264607
0xbc8c20b378b318a9db1fa5a3ee3e1d20a751afc5a605668fb055f41deae342b5730358915 days 13 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00052801
0x6f140e3c7a49b897d015a9039dfe9a8fe317c960d2b771f2e73178927f197945730356615 days 13 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00052737
0xcf65bd322941ffb69acc4bb781138d8207e92a6a9ae2486790dc7600382a74ca723944628 days 20 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.001318425
0x4c3c3a023985ef24e873d361c04c0de0a8da56ca216fd4333fab7c10da68af16715427647 days 12 hrs ago0x749d4144a82309c54fb551a3dcb10284a3aa8e46 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414021.01 Ether0.0003178665
0xa16dd1f77fabe793070cb7cb13094f1c680067f98f9d9c5112470e72e5e4ca0a714787148 days 20 hrs ago0x749d4144a82309c54fb551a3dcb10284a3aa8e46 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.000175825
0x845b81a8ffb783535813d8250238ee344180767044e91b3c0ef415a422f0590b714786848 days 20 hrs ago0x749d4144a82309c54fb551a3dcb10284a3aa8e46 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.000325825
0xbc23d3e0a1ecdd4be8edae30e76ba12a16ebcd9095f3f749b51f7ec36952bfbf703607369 days 19 hrs ago0x6f0ff9b9d45e7297f32bbae223c0922e1aa40fda IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.000150948
0x71188bd3bb0cdf934087474304ff61ce2d87a14cd71d1c10f175ab3d4d265da2699966876 days 7 hrs ago0xf6438a450efac6b880063e5567a037332d0c5a6a IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.001549841
0x2d7f5d20df9e65dbe368e313e7a53f0ee11007205e9f0434e4e231f6b14a8c81692026789 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xcb89e2acf897ff3505a0850fa99727e9986b7df5d18924faba11528da7458aa7692026489 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xe66f5f43e3c6cb2a470bce92df932d366feca3f29f6484c19b9047472c96f7a1692026289 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xaa1d1e0ffbcb6d9767e2a76d0eebc5c81f4c0d4a9323a532333fcf0ed917ae16692025989 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0x5222b4ad6ec29b240e357b2c381970bf8f0fa684f55025593b1d94ad9188367e692024789 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105346
0x8875768e430ef142c259c52a1c4ae36153bfd6011c5101470cb349e864895e22692024589 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0x2cc5319b86d246fbcf5808dbb812e06a2fb865a9a477d526a1ca0db8db9076cb692024389 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xb6d049abccc9c7fae2b7e9a1914efe9305c6d146fe063562e513e9c5bc73c05c692024189 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xd2896dbc972f7601225f566c49013f9472d409c531df6a2bfc19da7f42355c1c692024189 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xfc8b35975e2cf9349f5113496d28f378b1881988e5d88ecd4a3054496bd58852692023989 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105346
0x354fe9f035227b50f8e3eb3154c6c3334134459c65e38b9fc62b41e440871b3e692023789 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0xcbe4f197e3b27d44c24e9baed3cca4aacc95f1d60a282740b60c09f007fe03a4692023589 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0x215253f3e78acc1070737e2bad524e957be747fe4afaa470d01cb2a617f91036692023389 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0x915c000a451c9124262edcc740244e75dbac14cf771e0b5b1315144f90065619692023189 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
0x90fb0f725f7b856a7a089ae416ded7752282c4fb29e5a8f298f56b6ceb32556b692022289 days 17 hrs ago0x08da93d1c6884f52e5e87c335085c678cded0348 IN  0xf40c5e190a608b6f8c0bf2b38c9506b3279414020 Ether0.00105474
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
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:
AlethenaShares

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.24;

// This is the Alethena Share Token. 
// To learn more, visit https://github.com/Alethena/Alethena-Shares-Token
// Or contact us at [email protected]

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

contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender)
        public view returns (uint256);

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

    function approve(address spender, uint256 value) public returns (bool);
    event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
    );
}

contract Ownable {
    address public owner;
    address public master = 0x8fED3492dB590ad34ed42b0F509EB3c9626246Fc;

    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 master to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function transferOwnership(address _newOwner) public {
        require(msg.sender == master);
        _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;
    }
}

contract Claimable is ERC20Basic, Ownable {

    using SafeMath for uint256;

    struct Claim {
        address claimant; // the person who created the claim
        uint256 collateral; // the amount of wei deposited
        uint256 timestamp;  // the timestamp of the block in which the claim was made
    }

    struct PreClaim {
        bytes32 msghash; // the hash of nonce + address to be claimed
        uint256 timestamp;  // the timestamp of the block in which the preclaim was made
    }

    /** @param collateralRate Sets the collateral needed per share to file a claim */
    uint256 public collateralRate = 5*10**15 wei;

    uint256 public claimPeriod = 60*60*24*180; // In seconds ;
    uint256 public preClaimPeriod = 60*60*24; // In seconds ;

    mapping(address => Claim) public claims; // there can be at most one claim per address, here address is claimed address
    mapping(address => PreClaim) public preClaims; // there can be at most one preclaim per address, here address is claimer


    function setClaimParameters(uint256 _collateralRateInWei, uint256 _claimPeriodInDays) public onlyOwner() {
        uint256 claimPeriodInSeconds = _claimPeriodInDays*60*60*24;
        require(_collateralRateInWei > 0);
        require(_claimPeriodInDays > 90); // must be at least 90 days
        collateralRate = _collateralRateInWei;
        claimPeriod = claimPeriodInSeconds;
        emit ClaimParametersChanged(collateralRate, claimPeriod);
    }

    event ClaimMade(address indexed _lostAddress, address indexed _claimant, uint256 _balance);
    event ClaimPrepared(address indexed _claimer);
    event ClaimCleared(address indexed _lostAddress, uint256 collateral);
    event ClaimDeleted(address indexed _lostAddress, address indexed _claimant, uint256 collateral);
    event ClaimResolved(address indexed _lostAddress, address indexed _claimant, uint256 collateral);
    event ClaimParametersChanged(uint256 _collateralRate, uint256  _claimPeriodInDays);


  /** Anyone can declare that the private key to a certain address was lost by calling declareLost
    * providing a deposit/collateral. There are three possibilities of what can happen with the claim:
    * 1) The claim period expires and the claimant can get the deposit and the shares back by calling resolveClaim
    * 2) The "lost" private key is used at any time to call clearClaim. In that case, the claim is deleted and
    *    the deposit sent to the shareholder (the owner of the private key). It is recommended to call resolveClaim
    *    whenever someone transfers funds to let claims be resolved automatically when the "lost" private key is
    *    used again.
    * 3) The owner deletes the claim and assigns the deposit to the claimant. This is intended to be used to resolve
    *    disputes. Generally, using this function implies that you have to trust the issuer of the tokens to handle
    *    the situation well. As a rule of thumb, the contract owner should assume the owner of the lost address to be the
    *    rightful owner of the deposit.
    * It is highly recommended that the owner observes the claims made and informs the owners of the claimed addresses
    * whenever a claim is made for their address (this of course is only possible if they are known to the owner, e.g.
    * through a shareholder register).
    * To prevent frontrunning attacks, a claim can only be made if the information revealed when calling "declareLost"
    * was previously commited using the "prepareClaim" function.
    */

    function prepareClaim(bytes32 _hashedpackage) public{
        preClaims[msg.sender] = PreClaim({
            msghash: _hashedpackage,
            timestamp: block.timestamp
        });
        emit ClaimPrepared(msg.sender);
    }

    function validateClaim(address _lostAddress, bytes32 _nonce) private view returns (bool){
        PreClaim memory preClaim = preClaims[msg.sender];
        require(preClaim.msghash != 0);
        require(preClaim.timestamp + preClaimPeriod <= block.timestamp);
        require(preClaim.timestamp + 2*preClaimPeriod >= block.timestamp);
        return preClaim.msghash == keccak256(abi.encodePacked(_nonce, msg.sender, _lostAddress));
    }

    function declareLost(address _lostAddress, bytes32 _nonce) public payable{
        uint256 balance = balanceOf(_lostAddress);
        require(balance > 0);
        require(msg.value >= balance.mul(collateralRate));
        require(claims[_lostAddress].collateral == 0);
        require(validateClaim(_lostAddress, _nonce));

        claims[_lostAddress] = Claim({
            claimant: msg.sender,
            collateral: msg.value,
            timestamp: block.timestamp
        });
        delete preClaims[msg.sender];
        emit ClaimMade(_lostAddress, msg.sender, balance);
    }

    function getClaimant(address _lostAddress) public view returns (address){
        return claims[_lostAddress].claimant;
    }

    function getCollateral(address _lostAddress) public view returns (uint256){
        return claims[_lostAddress].collateral;
    }

    function getTimeStamp(address _lostAddress) public view returns (uint256){
        return claims[_lostAddress].timestamp;
    }

    function getPreClaimTimeStamp(address _claimerAddress) public view returns (uint256){
        return preClaims[_claimerAddress].timestamp;
    }

    function getMsgHash(address _claimerAddress) public view returns (bytes32){
        return preClaims[_claimerAddress].msghash;
    }

    /**
     * @dev Clears a claim after the key has been found again and assigns the collateral to the "lost" address.
     */
    function clearClaim() public returns (uint256){
        uint256 collateral = claims[msg.sender].collateral;
        if (collateral != 0){
            delete claims[msg.sender];
            msg.sender.transfer(collateral);
            emit ClaimCleared(msg.sender, collateral);
            return collateral;
        } else {
            return 0;
        }
    }

   /**
    * @dev This function is used to resolve a claim.
    * @dev After waiting period, the tokens on the lost address and collateral can be transferred.
   */
    function resolveClaim(address _lostAddress) public returns (uint256){
        Claim memory claim = claims[_lostAddress];
        require(claim.collateral != 0, "No claim found");
        require(claim.claimant == msg.sender);
        require(claim.timestamp + claimPeriod <= block.timestamp);
        address claimant = claim.claimant;
        delete claims[_lostAddress];
        claimant.transfer(claim.collateral);
        internalTransfer(_lostAddress, claimant, balanceOf(_lostAddress));
        emit ClaimResolved(_lostAddress, claimant, claim.collateral);
        return claim.collateral;
    }

    function internalTransfer(address _from, address _to, uint256 _value) internal;

     /** @dev This function is to be executed by the owner only in case a dispute needs to be resolved manually. */
    function deleteClaim(address _lostAddress) public onlyOwner(){
        Claim memory claim = claims[_lostAddress];
        require(claim.collateral != 0, "No claim found");
        delete claims[_lostAddress];
        claim.claimant.transfer(claim.collateral);
        emit ClaimDeleted(_lostAddress, claim.claimant, claim.collateral);
    }

}

contract AlethenaShares is ERC20, Claimable {

    string public constant name = "Alethena Equity";
    string public constant symbol = "ALEQ";
    uint8 public constant decimals = 0; // legally, shares are not divisible

    using SafeMath for uint256;

      /** URL where the source code as well as the terms and conditions can be found. */
    string public constant termsAndConditions = "shares.alethena.com";

    mapping(address => uint256) balances;
    uint256 totalSupply_;        // total number of tokenized shares, sum of all balances
    uint256 totalShares_ = 1397188; // total number of outstanding shares, maybe not all tokenized

    event Mint(address indexed shareholder, uint256 amount, string message);
    event Unmint(uint256 amount, string message);

  /** @dev Total number of tokens in existence */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

  /** @dev Total number of shares in existence, not necessarily all represented by a token.
    * @dev This could be useful to calculate the total market cap.
    */
    function totalShares() public view returns (uint256) {
        return totalShares_;
    }

    function setTotalShares(uint256 _newTotalShares) public onlyOwner() {
        require(_newTotalShares >= totalSupply());
        totalShares_ = _newTotalShares;
    }

  /** Increases the number of the tokenized shares. If the shares are newly issued, the share total also needs to be increased. */
    function mint(address shareholder, uint256 _amount, string _message) public onlyOwner() {
        require(_amount > 0);
        require(totalSupply_.add(_amount) <= totalShares_);
        balances[shareholder] = balances[shareholder].add(_amount);
        totalSupply_ = totalSupply_ + _amount;
        emit Mint(shareholder, _amount, _message);
    }

/** Decrease the number of the tokenized shares. There are two use-cases for this function:
 *  1) a capital decrease with a destruction of the shares, in which case the law requires that the
 *     destroyed shares are currently owned by the company.
 *  2) a shareholder wants to take shares offline. This can only happen with the agreement of the
 *     the company. To do so, the shares must be transferred to the company first, the company call
 *     this function and then assigning the untokenized shares back to the shareholder in whatever
 *     way the new form (e.g. printed certificate) of the shares requires.
 */
    function unmint(uint256 _amount, string _message) public onlyOwner() {
        require(_amount > 0);
        require(_amount <= balanceOf(owner));
        balances[owner] = balances[owner].sub(_amount);
        totalSupply_ = totalSupply_ - _amount;
        emit Unmint(_amount, _message);
    }

  /** This contract is pausible.  */
    bool public isPaused = false;

  /** @dev Function to set pause.
   *  This could for example be used in case of a fork of the network, in which case all
   *  "wrong" forked contracts should be paused in their respective fork. Deciding which
   *  fork is the "right" one is up to the owner of the contract.
   */
    function pause(bool _pause, string _message, address _newAddress, uint256 _fromBlock) public onlyOwner() {
        isPaused = _pause;
        emit Pause(_pause, _message, _newAddress, _fromBlock);
    }

    event Pause(bool paused, string message, address newAddress, uint256 fromBlock);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
The next section contains standard ERC20 routines.
Main change: Transfer functions have an additional post function which resolves claims if applicable.
 */
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
    function transfer(address _to, uint256 _value) public returns (bool) {
        clearClaim();
        internalTransfer(msg.sender, _to, _value);
        return true;
    }

    function internalTransfer(address _from, address _to, uint256 _value) internal {
        require(!isPaused);
        require(_to != address(0));
        require(_value <= balances[_from]);
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(_from, _to, _value);
    }

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

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

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

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

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

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

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

}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting '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;
        }

        c = a * b;
        assert(c / a == b);
        return c;
    }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

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

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

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_lostAddress","type":"address"}],"name":"getClaimant","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_lostAddress","type":"address"},{"name":"_nonce","type":"bytes32"}],"name":"declareLost","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_claimerAddress","type":"address"}],"name":"getMsgHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_lostAddress","type":"address"}],"name":"deleteClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalShares","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"preClaims","outputs":[{"name":"msghash","type":"bytes32"},{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"collateralRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hashedpackage","type":"bytes32"}],"name":"prepareClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"clearClaim","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_claimerAddress","type":"address"}],"name":"getPreClaimTimeStamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"claimPeriod","outputs":[{"name":"","type":"uint256"}],"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":"_collateralRateInWei","type":"uint256"},{"name":"_claimPeriodInDays","type":"uint256"}],"name":"setClaimParameters","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_lostAddress","type":"address"}],"name":"resolveClaim","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pause","type":"bool"},{"name":"_message","type":"string"},{"name":"_newAddress","type":"address"},{"name":"_fromBlock","type":"uint256"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_lostAddress","type":"address"}],"name":"getCollateral","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_message","type":"string"}],"name":"unmint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newTotalShares","type":"uint256"}],"name":"setTotalShares","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"claims","outputs":[{"name":"claimant","type":"address"},{"name":"collateral","type":"uint256"},{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"shareholder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_message","type":"string"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_lostAddress","type":"address"}],"name":"getTimeStamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preClaimPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"master","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":"termsAndConditions","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"shareholder","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"message","type":"string"}],"name":"Unmint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"paused","type":"bool"},{"indexed":false,"name":"message","type":"string"},{"indexed":false,"name":"newAddress","type":"address"},{"indexed":false,"name":"fromBlock","type":"uint256"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"approver","type":"address"},{"indexed":false,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_lostAddress","type":"address"},{"indexed":true,"name":"_claimant","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"ClaimMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_claimer","type":"address"}],"name":"ClaimPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_lostAddress","type":"address"},{"indexed":false,"name":"collateral","type":"uint256"}],"name":"ClaimCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_lostAddress","type":"address"},{"indexed":true,"name":"_claimant","type":"address"},{"indexed":false,"name":"collateral","type":"uint256"}],"name":"ClaimDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_lostAddress","type":"address"},{"indexed":true,"name":"_claimant","type":"address"},{"indexed":false,"name":"collateral","type":"uint256"}],"name":"ClaimResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_collateralRate","type":"uint256"},{"indexed":false,"name":"_claimPeriodInDays","type":"uint256"}],"name":"ClaimParametersChanged","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code

608060405260018054600160a060020a0319908116738fed3492db590ad34ed42b0f509eb3c9626246fc179091556611c37937e0800060025562ed4e0060035562015180600455621551c4600955600a805460ff191690556000805490911633179055611aa2806100716000396000f3006080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101dc578063095ea7b31461026657806318160ddd1461029e5780631e3b9de5146102c557806323b872dd146103025780632434ec3e1461032c57806324b50e4314610345578063313ce5671461036657806332a7ae95146103915780633a98ef39146103b2578063493c160f146103c757806358a6be1c146104015780635b1c162514610416578063661884631461042e5780636b03ed5f1461045257806370a0823114610467578063715018a61461048857806375a88bcf1461049d5780637dc2cd98146104be5780638da5cb5b146104d357806391dc11fe146104e857806394d645a81461050357806395d89b4114610524578063980591f4146105395780639b56d6c9146105aa578063a56d96bb146105cb578063a77384c114610629578063a9059cbb14610641578063b187bd2614610665578063c6788bdd1461067a578063d3fc9864146106c3578063d73dd6231461072c578063dd62ed3e14610750578063eb470ebf14610777578063ee18d99e14610798578063ee97f7f3146107ad578063f2fde38b146107c2578063f678462f146107e3575b600080fd5b3480156101e857600080fd5b506101f16107f8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022b578181015183820152602001610213565b50505050905090810190601f1680156102585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027257600080fd5b5061028a600160a060020a036004351660243561082f565b604080519115158252519081900360200190f35b3480156102aa57600080fd5b506102b36108b2565b60408051918252519081900360200190f35b3480156102d157600080fd5b506102e6600160a060020a03600435166108b8565b60408051600160a060020a039092168252519081900360200190f35b34801561030e57600080fd5b5061028a600160a060020a03600435811690602435166044356108d6565b610343600160a060020a0360043516602435610973565b005b34801561035157600080fd5b506102b3600160a060020a0360043516610aa1565b34801561037257600080fd5b5061037b610abc565b6040805160ff9092168252519081900360200190f35b34801561039d57600080fd5b50610343600160a060020a0360043516610ac1565b3480156103be57600080fd5b506102b3610c54565b3480156103d357600080fd5b506103e8600160a060020a0360043516610c5a565b6040805192835260208301919091528051918290030190f35b34801561040d57600080fd5b506102b3610c73565b34801561042257600080fd5b50610343600435610c79565b34801561043a57600080fd5b5061028a600160a060020a0360043516602435610cd4565b34801561045e57600080fd5b506102b3610de0565b34801561047357600080fd5b506102b3600160a060020a0360043516610ea1565b34801561049457600080fd5b50610343610ebc565b3480156104a957600080fd5b506102b3600160a060020a0360043516610f28565b3480156104ca57600080fd5b506102b3610f46565b3480156104df57600080fd5b506102e6610f4c565b3480156104f457600080fd5b50610343600435602435610f5b565b34801561050f57600080fd5b506102b3600160a060020a0360043516610fde565b34801561053057600080fd5b506101f16111a3565b34801561054557600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610343958335151595369560449491939091019190819084018382808284375094975050508335600160a060020a03169450505060209091013590506111da565b3480156105b657600080fd5b506102b3600160a060020a03600435166112c9565b3480156105d757600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103439583359536956044949193909101919081908401838280828437509497506112e79650505050505050565b34801561063557600080fd5b50610343600435611421565b34801561064d57600080fd5b5061028a600160a060020a0360043516602435611451565b34801561067157600080fd5b5061028a611470565b34801561068657600080fd5b5061069b600160a060020a0360043516611479565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156106cf57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610343948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114a49650505050505050565b34801561073857600080fd5b5061028a600160a060020a03600435166024356115df565b34801561075c57600080fd5b506102b3600160a060020a0360043581169060243516611697565b34801561078357600080fd5b506102b3600160a060020a03600435166116c2565b3480156107a457600080fd5b506102b36116e0565b3480156107b957600080fd5b506102e66116e6565b3480156107ce57600080fd5b50610343600160a060020a03600435166116f5565b3480156107ef57600080fd5b506101f1611718565b60408051808201909152600f81527f416c657468656e61204571756974790000000000000000000000000000000000602082015281565b600a5460009060ff161561084257600080fd5b336000818152600b60209081526040808320600160a060020a03881680855290835292819020869055805193845290830191909152818101849052517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15060015b92915050565b60085490565b600160a060020a039081166000908152600560205260409020541690565b600160a060020a0383166000908152600b6020908152604080832033845290915281205482111561090657600080fd5b600160a060020a0384166000908152600b6020908152604080832033845290915290205461093a908363ffffffff61174f16565b600160a060020a0385166000908152600b60209081526040808320338452909152902055610969848484611761565b5060019392505050565b600061097e83610ea1565b90506000811161098d57600080fd5b6002546109a190829063ffffffff61186516565b3410156109ad57600080fd5b600160a060020a038316600090815260056020526040902060010154156109d357600080fd5b6109dd838361188e565b15156109e857600080fd5b604080516060810182523380825234602080840191825242848601908152600160a060020a038981166000818152600585528881209751885473ffffffffffffffffffffffffffffffffffffffff191693169290921787559351600180880191909155915160029096019590955583855260068252858520858155019390935583518581529351919390927f1982ca8958fc8a8176cb52be509260f4bc5af7ce04e1533711793f1c56dd535992918290030190a3505050565b600160a060020a031660009081526006602052604090205490565b600081565b610ac9611a34565b600054600160a060020a03163314610ae057600080fd5b50600160a060020a03808216600090815260056020908152604091829020825160608101845281549094168452600181015491840182905260020154918301919091521515610b9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f20636c61696d20666f756e64000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038083166000908152600560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19168155600181018490556002018390558451918501519051919093169280156108fc0292909190818181858888f19350505050158015610c08573d6000803e3d6000fd5b5080516020808301516040805191825251600160a060020a03938416938616927fbb036e629a9f4c0897ee5d48440dfdb36f7e772117723a2ed603a6514244c2d5928290030190a35050565b60095490565b6006602052600090815260409020805460019091015482565b60025481565b604080518082018252828152426020808301918252336000818152600690925284822093518455915160019093019290925591517f4c767b7b6b4e5b19edbb3ce0f841c467aa366beda334c58254bb264371819a119190a250565b600a54600090819060ff1615610ce957600080fd5b50336000908152600b60209081526040808320600160a060020a038716845290915290205480831115610d3f57336000908152600b60209081526040808320600160a060020a0388168452909152812055610d74565b610d4f818463ffffffff61174f16565b336000908152600b60209081526040808320600160a060020a03891684529091529020555b336000818152600b60209081526040808320600160a060020a038916808552908352928190205481519485529184019290925282820152517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15060019392505050565b336000908152600560205260408120600101548015610e985733600081815260056020526040808220805473ffffffffffffffffffffffffffffffffffffffff19168155600181018390556002018290555183156108fc0291849190818181858888f19350505050158015610e59573d6000803e3d6000fd5b5060408051828152905133917f203627483d943880619f4b7e0cca21dbefd6204b4d85b124eb99540e17ba86dd919081900360200190a2809150610e9d565b600091505b5090565b600160a060020a031660009081526007602052604090205490565b600054600160a060020a03163314610ed357600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600160a060020a031660009081526006602052604090206001015490565b60035481565b600054600160a060020a031681565b60008054600160a060020a03163314610f7357600080fd5b5062015180810260008311610f8757600080fd5b605a8211610f9457600080fd5b60028390556003819055604080518481526020810183905281517fd60264524e7672c0a7793b11f98c5c2852a01efd67c9928705e51e0fdfbc4819929181900390910190a1505050565b6000610fe8611a34565b50600160a060020a03808316600090815260056020908152604080832081516060810183528154909516855260018101549285018390526002015490840152151561109457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f20636c61696d20666f756e64000000000000000000000000000000000000604482015290519081900360640190fd5b8151600160a060020a031633146110aa57600080fd5b600354604083015142910111156110c057600080fd5b508051600160a060020a038085166000908152600560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19168155600181018490556002018390559085015190519284169281156108fc0292818181858888f19350505050158015611135573d6000803e3d6000fd5b50611149848261114487610ea1565b611761565b80600160a060020a031684600160a060020a03167f52a5c2b28bc6eb9712d0ced43463103b486b13ccc9cda499fd3b2d7b6a74a8ee84602001516040518082815260200191505060405180910390a3506020015192915050565b60408051808201909152600481527f414c455100000000000000000000000000000000000000000000000000000000602082015281565b600054600160a060020a031633146111f157600080fd5b600a805460ff191685151590811790915560408051918252600160a060020a03841690820152606081018290526080602080830182815286519284019290925285517f016e2c313f98497b8330a5114aff9a72424bdf37c47e7cba23fc54dd480bc6dd938893889388938893929160a08401919087019080838360005b8381101561128657818101518382015260200161126e565b50505050905090810190601f1680156112b35780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a150505050565b600160a060020a031660009081526005602052604090206001015490565b600054600160a060020a031633146112fe57600080fd5b6000821161130b57600080fd5b60005461132090600160a060020a0316610ea1565b82111561132c57600080fd5b60008054600160a060020a0316815260076020526040902054611355908363ffffffff61174f16565b60008054600160a060020a0316815260076020908152604080832093909355600880548690039055825185815280820184815285519482019490945284517f6fa26c05a43c14146728c90c874027d865c1b4454522dfbadb3b5b3d3329714d9487948794919260608501928601918190849084905b838110156113e25781810151838201526020016113ca565b50505050905090810190601f16801561140f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600054600160a060020a0316331461143857600080fd5b6114406108b2565b81101561144c57600080fd5b600955565b600061145b610de0565b50611467338484611761565b50600192915050565b600a5460ff1681565b600560205260009081526040902080546001820154600290920154600160a060020a03909116919083565b600054600160a060020a031633146114bb57600080fd5b600082116114c857600080fd5b6009546008546114de908463ffffffff6119aa16565b11156114e957600080fd5b600160a060020a038316600090815260076020526040902054611512908363ffffffff6119aa16565b600160a060020a03841660008181526007602090815260408083209490945560088054870190558351868152808201858152865195820195909552855193947f85a66b9141978db9980f7e0ce3b468cebf4f7999f32b23091c5c03e798b1ba7a94889488946060850192908601918190849084905b8381101561159f578181015183820152602001611587565b50505050905090810190601f1680156115cc5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b600a5460009060ff16156115f257600080fd5b336000908152600b60209081526040808320600160a060020a0387168452909152902054611626908363ffffffff6119aa16565b336000818152600b60209081526040808320600160a060020a038916808552908352928190208590558051938452908301919091528181019290925290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a150600192915050565b600160a060020a039182166000908152600b6020908152604080832093909416825291909152205490565b600160a060020a031660009081526005602052604090206002015490565b60045481565b600154600160a060020a031681565b600154600160a060020a0316331461170c57600080fd5b611715816119b7565b50565b60408051808201909152601381527f7368617265732e616c657468656e612e636f6d00000000000000000000000000602082015281565b60008282111561175b57fe5b50900390565b600a5460ff161561177157600080fd5b600160a060020a038216151561178657600080fd5b600160a060020a0383166000908152600760205260409020548111156117ab57600080fd5b600160a060020a0383166000908152600760205260409020546117d4908263ffffffff61174f16565b600160a060020a038085166000908152600760205260408082209390935590841681522054611809908263ffffffff6119aa16565b600160a060020a0380841660008181526007602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000821515611876575060006108ac565b5081810281838281151561188657fe5b04146108ac57fe5b6000611898611a5f565b5033600090815260066020908152604091829020825180840190935280548084526001909101549183019190915215156118d157600080fd5b600454602082015142910111156118e757600080fd5b426004546002028260200151011015151561190157600080fd5b6040805160208082018690526c0100000000000000000000000033810283850152600160a060020a03881602605483015282516048818403018152606890920192839052815191929182918401908083835b602083106119725780518252601f199092019160209182019101611953565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912093519093149695505050505050565b818101828110156108ac57fe5b600160a060020a03811615156119cc57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6060604051908101604052806000600160a060020a0316815260200160008152602001600081525090565b6040805180820190915260008082526020820152905600a165627a7a723058201d17d0aa52b5bb37df3d3c2b7913c06f8e5a717b832d27cc4a22e29e9db7bd950029

Swarm Source

bzzr://1d17d0aa52b5bb37df3d3c2b7913c06f8e5a717b832d27cc4a22e29e9db7bd95
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.