Sponsored Link:  Up to 2% Cryptocurrency Cashback - Reserve your card - Monaco App - www.mona.co
Contract Overview | GigaWattToken
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 5317 txns
Token Tracker 0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda
  Latest 25 txns from a total Of 5317 transactions (+3 PendingTxns) View All

TxHash Age From To Value [TxFee]
0x7a094f61763dde0cef1925a12867528c0f84bcf82a6792427917e8d09fa7ec21(pending)18 mins ago0xb7dceb893da8a2bc7de5f659f3ab849651857db0  IN  0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda0 Ether(pending)
0x1a48d39e529db8eaeeb0b1322f1c2fb2ab51563ce2a46c8d6eb2b4caabcb3e27(pending)28 mins ago0xb4de6e13ea1c4f9b240ab676bdf9ded69e40d284  IN  0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda0 Ether(pending)
0xbe7e43e69abb0ac5e94a9a4a376d94ae222dcea138d5090d52597f16c106b6eb(pending)39 mins ago0xa6a561c39753fe1fecc9a518ea9a7edaa541be65  IN  0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda0 Ether(pending)
0x8fee9b53f5f1730c7c4f5b77bbac593761f2ae5784f573b49258b1f77933febe18 mins ago0x8125fd5aee7233a5260897ac293831aa17a20d5f  IN   GigaWattToken0 Ether0.000783069
0x2e6204638a491bc21ae77c0cf2f9106920813a8d3be5640787bf57676bf2dba228 mins ago0x53615026bf7c4b9addd4b3ad838c118b0ee45d33  IN   GigaWattToken0 Ether0.00071347089
0xb75dd6318c3db0674ae51d8ea485d482c5772dcbc555dd5264a29dd8745c750357 mins ago0xe4aa8f1925d6f625ec11cd4c4d88d73a2058e730  IN   GigaWattToken0 Ether0.000783069
0x6a92227897c4871141dd5bc2453a1da4167c326014b39b728980f0efa9a652c41 hr 41 mins ago0x10415739bb30448392137975c6b327b3f4ff0df1  IN   GigaWattToken0 Ether0.00089156
0xc8cdaf82c3a93feab4db8a28da292798c1df9f3fbe82bbbe415daaad712d351e1 hr 58 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.001924836523
0xc0471ccdae84d949bbab58c218b6ac80e1304c6ea6af78bb0fb253f2fabe1b172 hrs 7 mins ago0x8370651dc573b7cfbde2029de1b2c88ff220cd25  IN   GigaWattToken0 Ether0.000557225
0x5fe92ac1a9e2a49f3aaa18dc9dce3fa453ab10a4477547d6b1a316a850b451a52 hrs 46 mins ago0x88bfe9b06cf22a31d6bf7b93de3a0760422cf17f  IN   GigaWattToken0 Ether0.00074578
0xf74ee82669d326dfdeb8cdc83c9b483a6ef398648cf025d7e9c9ebc17c748f8c3 hrs 59 mins ago0x0c9831ac320e2ffee829275d7ed17b34bd1e3263  IN   GigaWattToken0 Ether0.00071142225
0xf4053518e04a554c2887ae68555148272233d932df1ff98812154aeba7aaf2784 hrs 6 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.00261125
0x6ffedbe738f5f4c751be402b9e2586bcefa61bfd2e8b52c4cc7ed72240587b9a4 hrs 16 mins ago0x5dde881e0f3bc23cf094a8db75eb413690c1ca06  IN   GigaWattToken0 Ether0.000889
0x0be8d7bc49d4d96cebd311b526fc0f79d78902801969ee4ef42637a77e370bd44 hrs 41 mins ago0x65262bc9f3507663d0925dc64323cf7edae94363  IN   GigaWattToken0 Ether0.0002978
0xc885cf30dacf27a1a83458253a4bf74fa120c6aec61e816c650b9a1071322b885 hrs 39 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.001307225
0xddbe7575ee13667cdc948f5e8b76f809b70a2e1af038129b0040d7e5f23c70c86 hrs 9 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.000932225
0x1ab9fccc113dc2b08db9fae07c6d865edf3dce4316ededea3ea2dc0cf57f362f6 hrs 15 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.001305625
0x492c77d310dcbb6abd6c82469ea7e9eb21c924b6de6ad8f575a59049741ec4636 hrs 59 mins ago0x5dde881e0f3bc23cf094a8db75eb413690c1ca06  IN   GigaWattToken0 Ether0.00135618
0xa68b3a020041954d281513c28275b2e301188b536c5c9035fde88c2f7c4a1f697 hrs 3 mins ago0x98c5c9dc6dd44d6dc07cbac11df9e0f38594cf42  IN   GigaWattToken0 Ether0.001307225
0x0c272ce5184d2f8db1b7081037265757694aa86ab58cd6167a3333b56f2eaf5b8 hrs 14 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.000930625
0x5dfc4015656953df8e3f5ad3a572b0bb1bbed7103d348d913655f50ffe9a32368 hrs 21 mins ago0xb6c3e6a645f105efae04d3332d3af259868e8e83  IN   GigaWattToken0 Ether0.00111867
0x302148fa5ca622c63562dfbeacb027db2aaea3d73ec8ab35a7fa0fed0aeb576c9 hrs 58 mins ago0x4cd4d9485c27f23932b625e87e23afa0ebed958a  IN   GigaWattToken0 Ether0.000180568
0x0d37191d924d6aa89f7e5752024aea54806e2c9342d19308de0d708ad2aef6a110 hrs 37 mins ago0x13ff691f65e8626ee08fccc73e13c31e0549c28b  IN   GigaWattToken0 Ether0.000180824
0xfa816fa08a1b1c12bd62bfa69097f437f3726c66fe9103547a5a671e968de15811 hrs 15 mins ago0xf29fc4f0cf196222f96122789842992fd56971b0  IN   GigaWattToken0 Ether0.000466725
0xf1b769f7baf16251df4e77b58dc0622c695cb989fcf6624af82ebb060dd4ae6511 hrs 19 mins ago0x6ccacebed374634698e6461729c4e76a24f57d1d  IN   GigaWattToken0 Ether0.000781725
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Name: GigaWattToken
Compiler Version: v0.4.6+commit.2dabbdf0
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
/*
 * Giga Watt Token Smart Contract.  Copyright © 2016 by ABDK Consulting.
 * Author: Mikhail Vladimirov <[email protected]>
 */
pragma solidity ^0.4.1;

/**
 * ERC-20 standard token interface, as defined
 * <a href="http://github.com/ethereum/EIPs/issues/20">here</a>.
 */
contract Token {
  /**
   * Get total number of tokens in circulation.
   *
   * @return total number of tokens in circulation
   */
  function totalSupply () constant returns (uint256 supply);

  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
            owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf (address _owner) constant returns (uint256 balance);

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens from the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value) returns (bool success);

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
            recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success);

  /**
   * Allow given spender to transfer given number of tokens from message sender.
   *
   * @param _spender address to allow the owner of to transfer tokens from
            message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
  function approve (address _spender, uint256 _value) returns (bool success);

  /**
   * Tell how many tokens given spender is currently allowed to transfer from
   * given owner.
   *
   * @param _owner address to get number of tokens allowed to be transferred
   *        from the owner of
   * @param _spender address to get number of tokens allowed to be transferred
   *        by the owner of
   * @return number of tokens given spender is currently allowed to transfer
   *         from given owner
   */
  function allowance (address _owner, address _spender)
  constant returns (uint256 remaining);

  /**
   * Logged when tokens were transferred from one owner to another.
   *
   * @param _from address of the owner, tokens were transferred from
   * @param _to address of the owner, tokens were transferred to
   * @param _value number of tokens transferred
   */
  event Transfer (address indexed _from, address indexed _to, uint256 _value);

  /**
   * Logged when owner approved his tokens to be transferred by some spender.
   *
   * @param _owner owner who approved his tokens to be transferred
   * @param _spender spender who were allowed to transfer the tokens belonging
   *        to the owner
   * @param _value number of tokens belonging to the owner, approved to be
   *        transferred by the spender
   */
  event Approval (
    address indexed _owner, address indexed _spender, uint256 _value);
}

/**
 * Provides methods to safely add, subtract and multiply uint256 numbers.
 */
contract SafeMath {
  uint256 constant private MAX_UINT256 =
    0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

  /**
   * Add two uint256 values, throw in case of overflow.
   *
   * @param x first value to add
   * @param y second value to add
   * @return x + y
   */
  function safeAdd (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    if (x > MAX_UINT256 - y) throw;
    return x + y;
  }

  /**
   * Subtract one uint256 value from another, throw in case of underflow.
   *
   * @param x value to subtract from
   * @param y value to subtract
   * @return x - y
   */
  function safeSub (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    if (x < y) throw;
    return x - y;
  }

  /**
   * Multiply two uint256 values, throw in case of overflow.
   *
   * @param x first value to multiply
   * @param y second value to multiply
   * @return x * y
   */
  function safeMul (uint256 x, uint256 y)
  constant internal
  returns (uint256 z) {
    if (y == 0) return 0; // Prevent division by zero at the next line
    if (x > MAX_UINT256 / y) throw;
    return x * y;
  }
}

/**
 * Abstract base contract for contracts implementing Token interface.
 */
contract AbstractToken is Token, SafeMath {
  /**
   * Get total number of tokens in circulation.
   *
   * @return total number of tokens in circulation
   */
  function totalSupply () constant returns (uint256 supply) {
    return tokensCount;
  }

  /**
   * Get number of tokens currently belonging to given owner.
   *
   * @param _owner address to get number of tokens currently belonging to the
            owner of
   * @return number of tokens currently belonging to the owner of given address
   */
  function balanceOf (address _owner) constant returns (uint256 balance) {
    return accounts [_owner];
  }

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens from the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value) returns (bool success) {
    return doTransfer (msg.sender, _to, _value);
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
            recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success)
  {
    if (_value > approved [_from][msg.sender]) return false;
    if (doTransfer (_from, _to, _value)) {
      approved [_from][msg.sender] =
        safeSub (approved[_from][msg.sender], _value);
      return true;
    } else return false;
  }

  /**
   * Allow given spender to transfer given number of tokens from message sender.
   *
   * @param _spender address to allow the owner of to transfer tokens from
            message sender
   * @param _value number of tokens to allow to transfer
   * @return true if token transfer was successfully approved, false otherwise
   */
  function approve (address _spender, uint256 _value) returns (bool success) {
    approved [msg.sender][_spender] = _value;
    Approval (msg.sender, _spender, _value);
    return true;
  }

  /**
   * Tell how many tokens given spender is currently allowed to transfer from
   * given owner.
   *
   * @param _owner address to get number of tokens allowed to be transferred
   *        from the owner of
   * @param _spender address to get number of tokens allowed to be transferred
   *        by the owner of
   * @return number of tokens given spender is currently allowed to transfer
   *         from given owner
   */
  function allowance (address _owner, address _spender)
  constant returns (uint256 remaining) {
    return approved [_owner][_spender];
  }

  /**
   * Create given number of new tokens and give them to given owner.
   *
   * @param _owner address to given new created tokens to the owner of
   * @param _value number of new tokens to create
   */
  function createTokens (address _owner, uint256 _value) internal {
    if (_value > 0) {
      accounts [_owner] = safeAdd (accounts [_owner], _value);
      tokensCount = safeAdd (tokensCount, _value);
    }
  }

  /**
   * Perform token transfer.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to to the owner of
   * @param _value number of tokens to transfer
   * @return true if tokens were transferred successfully, false otherwise
   */
  function doTransfer (address _from, address _to, uint256 _value)
  private returns (bool success) {
    if (_value > accounts [_from]) return false;
    if (_value > 0 && _from != _to) {
      accounts [_from] = safeSub (accounts [_from], _value);
      accounts [_to] = safeAdd (accounts [_to], _value);
      Transfer (_from, _to, _value);
    }
    return true;
  }

  /**
   * Total number of tokens in circulation.
   */
  uint256 tokensCount;

  /**
   * Maps addresses of token owners to states of their accounts.
   */
  mapping (address => uint256) accounts;

  /**
   * Maps addresses of token owners to mappings from addresses of spenders to
   * how many tokens belonging to the owner, the spender is currently allowed to
   * transfer.
   */
  mapping (address => mapping (address => uint256)) approved;
}

/**
 * Standard Token smart contract that provides the following features:
 * <ol>
 *   <li>Centralized creation of new tokens</li> 
 *   <li>Freeze/unfreeze token transfers</li>
 *   <li>Change owner</li>
 * </ol>
 */
contract StandardToken is AbstractToken {
  /**
   * Maximum allowed tokens in circulation (2^64 - 1).
   */
  uint256 constant private MAX_TOKENS = 0xFFFFFFFFFFFFFFFF;

  /**
   * Address of the owner of the contract.
   */
  address owner;

  /**
   * Whether transfers are currently frozen.
   */
  bool frozen;

  /**
   * Instantiate the contract and make the message sender to be the owner.
   */
  function StandardToken () {
    owner = msg.sender;
  }

  /**
   * Transfer given number of tokens from message sender to given recipient.
   *
   * @param _to address to transfer tokens from the owner of
   * @param _value number of tokens to transfer to the owner of given address
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transfer (address _to, uint256 _value)
  returns (bool success) {
    if (frozen) return false;
    else return AbstractToken.transfer (_to, _value);
  }

  /**
   * Transfer given number of tokens from given owner to given recipient.
   *
   * @param _from address to transfer tokens from the owner of
   * @param _to address to transfer tokens to the owner of
   * @param _value number of tokens to transfer from given owner to given
            recipient
   * @return true if tokens were transferred successfully, false otherwise
   */
  function transferFrom (address _from, address _to, uint256 _value)
  returns (bool success) {
    if (frozen) return false;
    else return AbstractToken.transferFrom (_from, _to, _value);
  }

  /**
   * Create certain number of new tokens and give them to the owner of the
   * contract.
   * 
   * @param _value number of new tokens to create
   * @return true if tokens were created successfully, false otherwise
   */
  function createTokens (uint256 _value)
  returns (bool success) {
    if (msg.sender != owner) throw;

    if (_value > MAX_TOKENS - totalSupply ()) return false;

    AbstractToken.createTokens (owner, _value);

    return true;
  }

  /**
   * Freeze token transfers.
   */
  function freezeTransfers () {
    if (msg.sender != owner) throw;

    if (!frozen)
    {
      frozen = true;
      Freeze ();
    }
  }

  /**
   * Unfreeze token transfers.
   */
  function unfreezeTransfers () {
    if (msg.sender != owner) throw;

    if (frozen) {
      frozen = false;
      Unfreeze ();
    }
  }

  /**
   * Set new owner address.
   *
   * @param _newOwner new owner address
   */
  function setOwner (address _newOwner) {
    if (msg.sender != owner) throw;

    owner = _newOwner;
  }

  /**
   * Logged when token transfers were freezed.
   */
  event Freeze ();

  /**
   * Logged when token transfers were unfreezed.
   */
  event Unfreeze ();
}

/**
 * Giga Watt Token Smart Contract.
 */
contract GigaWattToken is StandardToken {
  /**
   * Constructor just calls constructor of parent contract.
   */
  function GigaWattToken () StandardToken () {
    // Do nothing
  }
}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"freezeTransfers","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unfreezeTransfers","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"createTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[],"name":"Unfreeze","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234610000575b5b60038054600160a060020a0319166c01000000000000000000000000338102041790555b5b5b6106f58061003f6000396000f3606060405236156100825760e060020a6000350463015024608114610087578063095ea7b31461009657806313af4035146100bd57806318160ddd146100cf57806323b872dd146100ee57806331c420d41461011857806370a08231146101275780637e1f2bb814610149578063a9059cbb1461016d578063dd62ed3e14610194575b610000565b34610000576100946101b9565b005b34610000576100a9600435602435610238565b604080519115158252519081900360200190f35b34610000576100946004356102a3565b005b34610000576100dc6102f2565b60408051918252519081900360200190f35b34610000576100a96004356024356044356102f9565b604080519115158252519081900360200190f35b3461000057610094610330565b005b34610000576100dc6004356103a8565b60408051918252519081900360200190f35b34610000576100a96004356103c7565b604080519115158252519081900360200190f35b34610000576100a9600435602435610425565b604080519115158252519081900360200190f35b34610000576100dc60043560243561045e565b60408051918252519081900360200190f35b60035433600160a060020a039081169116146101d457610000565b60035460a060020a900460ff161515610235576003805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a15b5b565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035433600160a060020a039081169116146102be57610000565b6003805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b50565b6000545b90565b60035460009060a060020a900460ff161561031a5750600061032856610328565b61032584848461048b565b90505b5b9392505050565b60035433600160a060020a0390811691161461034b57610000565b60035460a060020a900460ff1615610235576003805474ff0000000000000000000000000000000000000000191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a15b5b565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146103e557610000565b6103ed6102f2565b67ffffffffffffffff03821115610406575060006103c2565b60035461041c90600160a060020a031683610547565b5060015b919050565b60035460009060a060020a900460ff16156104465750600061029d5661029d565b61045083836105a3565b905061029d565b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600160a060020a038084166000908152600260209081526040808320339094168352929052908120548211156104c357506000610328565b6104ce8484846105b9565b1561053757600160a060020a038085166000908152600260209081526040808320339094168352929052205461050490836106bd565b600160a060020a038086166000908152600260209081526040808320339094168352929052205550600161032856610328565b506000610328565b5b9392505050565b600081111561059e57600160a060020a03821660009081526001602052604090205461057390826106d7565b600160a060020a0383166000908152600160205260408120919091555461059a90826106d7565b6000555b5b5050565b60006105b03384846105b9565b90505b92915050565b600160a060020a0383166000908152600160205260408120548211156105e157506000610328565b600082118015610603575082600160a060020a031684600160a060020a031614155b156106b257600160a060020a03841660009081526001602052604090205461062b90836106bd565b600160a060020a03808616600090815260016020526040808220939093559085168152205461065a90836106d7565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5060015b9392505050565b6000818310156106cc57610000565b508082035b92915050565b600081600019038311156106ea57610000565b508181015b9291505056

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.