Contract Overview | BTC20Crowdsale
Balance: 0 Ether
Ether Value: $0
Transactions: 3 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x961863188d6c78a63bd9bbed70c58cafadad7c18at txn 0x5ed67c1a4233a103c69edadfb147af7b986c8e42a8df746b6a81bd753bcde3f2
Token Balance:
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0xfb9345567b6b650dfa4d4053eee890d17315617c9d737689b6bede4cebe84fd24903236277 days 4 hrs ago0xf26c7cd79aa1ed2466e7e81a0e0541709ddd050b0x58ae31670a7db87a117eef6bbc347b764e1a162e0.6 Ether
0x738293ff6dac085785acda6de3821a20737fe29c44064e71464deabe9f5181954896459278 days 10 hrs ago0xf26c7cd79aa1ed2466e7e81a0e0541709ddd050b0x58ae31670a7db87a117eef6bbc347b764e1a162e0.05 Ether
0x5ed67c1a4233a103c69edadfb147af7b986c8e42a8df746b6a81bd753bcde3f24889748279 days 16 hrs ago0xf26c7cd79aa1ed2466e7e81a0e0541709ddd050b  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: BTC20Crowdsale
Compiler Text: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.11;

/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
 
 
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

 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 c;
  }

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

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

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() 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 transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant public returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) tokenBalances;

  /**
  * @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) {
    require(tokenBalances[msg.sender]>=_value);
    tokenBalances[msg.sender] = tokenBalances[msg.sender].sub(_value);
    tokenBalances[_to] = tokenBalances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @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) constant public returns (uint256 balance) {
    return tokenBalances[_owner];
  }

}

contract BTC20Token is BasicToken,Ownable {

   using SafeMath for uint256;
   
   //TODO: Change the name and the symbol
   string public constant name = "BTC20";
   string public constant symbol = "BTC20";
   uint256 public constant decimals = 18;

   uint256 public constant INITIAL_SUPPLY = 21000000;
   event Debug(string message, address addr, uint256 number);
  /**
   * @dev Contructor that gives msg.sender all of existing tokens.
   */
    function BTC20Token(address wallet) public {
        owner = msg.sender;
        totalSupply = INITIAL_SUPPLY * 10 ** 18;
        tokenBalances[wallet] = totalSupply;   //Since we divided the token into 10^18 parts
    }

    function mint(address wallet, address buyer, uint256 tokenAmount) public onlyOwner {
      require(tokenBalances[wallet] >= tokenAmount);               // checks if it has enough to sell
      tokenBalances[buyer] = tokenBalances[buyer].add(tokenAmount);                  // adds the amount to buyer's balance
      tokenBalances[wallet] = tokenBalances[wallet].sub(tokenAmount);                        // subtracts amount from seller's balance
      Transfer(wallet, buyer, tokenAmount); 
    }
  function showMyTokenBalance(address addr) public view returns (uint tokenBalance) {
        tokenBalance = tokenBalances[addr];
    }
}
contract BTC20Crowdsale {
  using SafeMath for uint256;
 
  // The token being sold
  BTC20Token public token;

  // start and end timestamps where investments are allowed (both inclusive)
  uint256 public startTime;
  uint256 public endTime;

  // address where funds are collected
  // address where tokens are deposited and from where we send tokens to buyers
  address public wallet;

  // how many token units a buyer gets per wei
  uint256 public ratePerWei = 50000;

  // amount of raised money in wei
  uint256 public weiRaised;

  uint256 TOKENS_SOLD;
  uint256 maxTokensToSale = 15000000 * 10 ** 18;
  uint256 minimumContribution = 5 * 10 ** 16; //0.05 is the minimum contribution

  /**
   * event for token purchase logging
   * @param purchaser who paid for the tokens
   * @param beneficiary who got the tokens
   * @param value weis paid for purchase
   * @param amount amount of tokens purchased
   */
  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);


  function BTC20Crowdsale(uint256 _startTime, address _wallet) public 
  {
    startTime = _startTime;   
    endTime = startTime + 14 days;
    
    require(endTime >= startTime);
    require(_wallet != 0x0);

    wallet = _wallet;
    token = createTokenContract(wallet);
    
  }
  // creates the token to be sold.
  function createTokenContract(address wall) internal returns (BTC20Token) {
    return new BTC20Token(wall);
  }


  // fallback function can be used to buy tokens
  function () public payable {
    buyTokens(msg.sender);
  }

  //determine the rate of the token w.r.t. time elapsed
  function determineBonus(uint tokens) internal view returns (uint256 bonus) {
    uint256 timeElapsed = now - startTime;
    uint256 timeElapsedInWeeks = timeElapsed.div(7 days);
    if (timeElapsedInWeeks == 0)
    {
      bonus = tokens.mul(50); //50% bonus
      bonus = bonus.div(100);
    }
    else if (timeElapsedInWeeks == 1)
    {
      bonus = tokens.mul(25); //25% bonus
      bonus = bonus.div(100);
    }
    else
    {
        bonus = 0;   //No tokens to be transferred - ICO time is over
    }
  }

  // low level token purchase function
  // Minimum purchase can be of 1 ETH
  
  function buyTokens(address beneficiary) public payable {
    require(beneficiary != 0x0);
    require(validPurchase());
    require(msg.value>= minimumContribution);
    require(TOKENS_SOLD<maxTokensToSale);
    uint256 weiAmount = msg.value;
    
    // calculate token amount to be created
    
    uint256 tokens = weiAmount.mul(ratePerWei);
    uint256 bonus = determineBonus(tokens);
    tokens = tokens.add(bonus);
    require(TOKENS_SOLD+tokens<=maxTokensToSale);
    
    // update state
    weiRaised = weiRaised.add(weiAmount);

    token.mint(wallet, beneficiary, tokens); 
    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
    TOKENS_SOLD = TOKENS_SOLD.add(tokens);
    forwardFunds();
  }

  // send ether to the fund collection wallet
  // override to create custom fund forwarding mechanisms
  function forwardFunds() internal {
    wallet.transfer(msg.value);
  }

  // @return true if the transaction can buy tokens
  function validPurchase() internal constant returns (bool) {
    bool withinPeriod = now >= startTime && now <= endTime;
    bool nonZeroPurchase = msg.value != 0;
    return withinPeriod && nonZeroPurchase;
  }

  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    return now > endTime;
  }
  
   
    function changeEndDate(uint256 endTimeUnixTimestamp) public returns(bool) {
        require (msg.sender == wallet);
        endTime = endTimeUnixTimestamp;
    }
    function changeStartDate(uint256 startTimeUnixTimestamp) public returns(bool) {
        require (msg.sender == wallet);
        startTime = startTimeUnixTimestamp;
    }
    function setPriceRate(uint256 newPrice) public returns (bool) {
        require (msg.sender == wallet);
        ratePerWei = newPrice;
    }
    
    function changeMinimumContribution(uint256 minContribution) public returns (bool) {
        require (msg.sender == wallet);
        minimumContribution = minContribution * 10 ** 15;
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"startTimeUnixTimestamp","type":"uint256"}],"name":"changeStartDate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endTimeUnixTimestamp","type":"uint256"}],"name":"changeEndDate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setPriceRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"minContribution","type":"uint256"}],"name":"changeMinimumContribution","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ratePerWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405261c3506004556a0c685fa11e01ec6f00000060075566b1a2bc2ec50000600855341561002f57600080fd5b6040516040806113a283398101604052808051919060200180516001849055621275008401600281905590925083901015905061006b57600080fd5b600160a060020a038116151561008057600080fd5b60038054600160a060020a031916600160a060020a0383811691909117918290556100b891166401000000006100e081026105d71704565b60008054600160a060020a031916600160a060020a0392909216919091179055506101279050565b6000816100eb610117565b600160a060020a039091168152602001604051809103906000f080151561011157600080fd5b92915050565b60405161061180610d9183390190565b610c5b806101366000396000f3006060604052600436106100b85763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662739f2a81146100c35780633197cbb6146100ed5780634042b66f1461011257806345737b1e14610125578063521eb2731461013b5780636786ed0e1461016a57806378e979251461018057806392bf2bf114610193578063bc7c322c146101a9578063ec8ac4d8146101bc578063ecb70fb7146101d0578063fc0c546a146101e3575b6100c1336101f6565b005b34156100ce57600080fd5b6100d96004356103ab565b604051901515815260200160405180910390f35b34156100f857600080fd5b6101006103d2565b60405190815260200160405180910390f35b341561011d57600080fd5b6101006103d8565b341561013057600080fd5b6100d96004356103de565b341561014657600080fd5b61014e610405565b604051600160a060020a03909116815260200160405180910390f35b341561017557600080fd5b6100d9600435610414565b341561018b57600080fd5b61010061043b565b341561019e57600080fd5b6100d9600435610441565b34156101b457600080fd5b610100610470565b6100c1600160a060020a03600435166101f6565b34156101db57600080fd5b6100d9610476565b34156101ee57600080fd5b61014e61047e565b60008080600160a060020a038416151561020f57600080fd5b61021761048d565b151561022257600080fd5b60085434101561023157600080fd5b6007546006541061024157600080fd5b60045434935061025890849063ffffffff6104bd16565b9150610263826104e8565b9050610275828263ffffffff61055e16565b915060075482600654011115151561028c57600080fd5b60055461029f908463ffffffff61055e16565b600555600054600354600160a060020a039182169163c6c3bbe6911686856040517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561032557600080fd5b6102c65a03f1151561033657600080fd5b50505083600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18858560405191825260208201526040908101905180910390a360065461039a908363ffffffff61055e16565b6006556103a561056d565b50505050565b60035460009033600160a060020a039081169116146103c957600080fd5b60019190915590565b60025481565b60055481565b60035460009033600160a060020a039081169116146103fc57600080fd5b60029190915590565b600354600160a060020a031681565b60035460009033600160a060020a0390811691161461043257600080fd5b60049190915590565b60015481565b60035460009033600160a060020a0390811691161461045f57600080fd5b66038d7ea4c6800090910260085590565b60045481565b600254421190565b600054600160a060020a031681565b600080600060015442101580156104a657506002544211155b9150503415158180156104b65750805b9250505090565b60008282028315806104d957508284828115156104d657fe5b04145b15156104e157fe5b9392505050565b6001546000904203816105048262093a8063ffffffff6105a316565b90508015156105385761051e84603263ffffffff6104bd16565b925061053183606463ffffffff6105a316565b9250610557565b80600114156105525761051e84601963ffffffff6104bd16565b600092505b5050919050565b6000828201838110156104e157fe5b600354600160a060020a03163480156108fc0290604051600060405180830381858888f1935050505015156105a157600080fd5b565b6000808083116105af57fe5b82848115156105ba57fe5b04905082848115156105c857fe5b0681840201841415156104e157fe5b6000816105e261060e565b600160a060020a039091168152602001604051809103906000f080151561060857600080fd5b92915050565b6040516106118061061f8339019056006060604052341561000f57600080fd5b6040516020806106118339810160405280805160028054600160a060020a03338116600160a060020a031992831681179092169091179091556a115eec47f6cf7e3500000060008181559190921681526001602052604090205550506105978061007a6000396000f3006060604052600436106100ae5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100b357806318160ddd1461013d5780632ff2e9dc14610162578063313ce5671461017557806370a08231146101885780638da5cb5b146101a75780638fe476251461018857806395d89b41146100b3578063a9059cbb146101d6578063c6c3bbe61461020c578063f2fde38b14610236575b600080fd5b34156100be57600080fd5b6100c6610255565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101025780820151838201526020016100ea565b50505050905090810190601f16801561012f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014857600080fd5b61015061028c565b60405190815260200160405180910390f35b341561016d57600080fd5b610150610292565b341561018057600080fd5b61015061029a565b341561019357600080fd5b610150600160a060020a036004351661029f565b34156101b257600080fd5b6101ba6102ba565b604051600160a060020a03909116815260200160405180910390f35b34156101e157600080fd5b6101f8600160a060020a03600435166024356102c9565b604051901515815260200160405180910390f35b341561021757600080fd5b610234600160a060020a03600435811690602435166044356103ae565b005b341561024157600080fd5b610234600160a060020a03600435166104a8565b60408051908101604052600581527f4254433230000000000000000000000000000000000000000000000000000000602082015281565b60005481565b6301406f4081565b601281565b600160a060020a031660009081526001602052604090205490565b600254600160a060020a031681565b600160a060020a033316600090815260016020526040812054829010156102ef57600080fd5b600160a060020a033316600090815260016020526040902054610318908363ffffffff61054316565b600160a060020a03338116600090815260016020526040808220939093559085168152205461034d908363ffffffff61055516565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60025433600160a060020a039081169116146103c957600080fd5b600160a060020a038316600090815260016020526040902054819010156103ef57600080fd5b600160a060020a038216600090815260016020526040902054610418908263ffffffff61055516565b600160a060020a03808416600090815260016020526040808220939093559085168152205461044d908263ffffffff61054316565b600160a060020a038085166000818152600160205260409081902093909355908416917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b60025433600160a060020a039081169116146104c357600080fd5b600160a060020a03811615156104d857600080fd5b600254600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561054f57fe5b50900390565b60008282018381101561056457fe5b93925050505600a165627a7a72305820b3e28fd25f40b3512df9c1e7741fdc555294597090d168abf498ab4190b6ecb70029a165627a7a723058203d4cbcdbcb86d86e1f41682285b52ff50f7dcc345e5ed29dfb6dbff2974e42b200296060604052341561000f57600080fd5b6040516020806106118339810160405280805160028054600160a060020a03338116600160a060020a031992831681179092169091179091556a115eec47f6cf7e3500000060008181559190921681526001602052604090205550506105978061007a6000396000f3006060604052600436106100ae5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100b357806318160ddd1461013d5780632ff2e9dc14610162578063313ce5671461017557806370a08231146101885780638da5cb5b146101a75780638fe476251461018857806395d89b41146100b3578063a9059cbb146101d6578063c6c3bbe61461020c578063f2fde38b14610236575b600080fd5b34156100be57600080fd5b6100c6610255565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101025780820151838201526020016100ea565b50505050905090810190601f16801561012f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014857600080fd5b61015061028c565b60405190815260200160405180910390f35b341561016d57600080fd5b610150610292565b341561018057600080fd5b61015061029a565b341561019357600080fd5b610150600160a060020a036004351661029f565b34156101b257600080fd5b6101ba6102ba565b604051600160a060020a03909116815260200160405180910390f35b34156101e157600080fd5b6101f8600160a060020a03600435166024356102c9565b604051901515815260200160405180910390f35b341561021757600080fd5b610234600160a060020a03600435811690602435166044356103ae565b005b341561024157600080fd5b610234600160a060020a03600435166104a8565b60408051908101604052600581527f4254433230000000000000000000000000000000000000000000000000000000602082015281565b60005481565b6301406f4081565b601281565b600160a060020a031660009081526001602052604090205490565b600254600160a060020a031681565b600160a060020a033316600090815260016020526040812054829010156102ef57600080fd5b600160a060020a033316600090815260016020526040902054610318908363ffffffff61054316565b600160a060020a03338116600090815260016020526040808220939093559085168152205461034d908363ffffffff61055516565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60025433600160a060020a039081169116146103c957600080fd5b600160a060020a038316600090815260016020526040902054819010156103ef57600080fd5b600160a060020a038216600090815260016020526040902054610418908263ffffffff61055516565b600160a060020a03808416600090815260016020526040808220939093559085168152205461044d908263ffffffff61054316565b600160a060020a038085166000818152600160205260409081902093909355908416917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b60025433600160a060020a039081169116146104c357600080fd5b600160a060020a03811615156104d857600080fd5b600254600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282111561054f57fe5b50900390565b60008282018381101561056457fe5b93925050505600a165627a7a72305820b3e28fd25f40b3512df9c1e7741fdc555294597090d168abf498ab4190b6ecb70029000000000000000000000000000000000000000000000000000000005a57fa8000000000000000000000000058ae31670a7db87a117eef6bbc347b764e1a162e

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a57fa80
Arg [1] : 00000000000000000000000058ae31670a7db87a117eef6bbc347b764e1a162e


   Swarm Source:
bzzr://b3e28fd25f40b3512df9c1e7741fdc555294597090d168abf498ab4190b6ecb7

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.