Contract Overview | AgoraCrowdsale
Balance: 0.010708093524267536 Ether
Ether Value: $2.21 (@ $206.00/ETH)
Transactions: 414 txns
Token Tracker: Agora (AGO)
 Latest 25 txns From a total of 414 Transactions

TxHash Age From To Value [TxFee]
0xf43ff19f3c1aba50578565a745e6fbdd347a0d78efa2b0c2cea8fb8c180459465 days 12 hrs ago0x1c7223d6578e4130784857ce68fd5e337fb3c344  IN   AgoraCrowdsale0 Ether0.000183404
0xcc67309e76e616eb9b72c6061679cf3d3417d8eb9fe5143be5257c11bc8e4e5d8 days 2 hrs ago0x37c166dc595bbbcbfb9965d8634552553a320e4d  IN   AgoraCrowdsale0 Ether0.000366296
0x76a6e4f9bf19ab09c273b54db271960a6ef3268eb431749822f969f3341241788 days 2 hrs ago0xf80e866e3c41e76643b4da4a3ffed88100dc5bff  IN   AgoraCrowdsale0 Ether0.000450415
0x9b96780cf0524c80137ecfce3ccfaff71d1f6613b1484ac061f0b3fd8c71f45638 days 2 hrs ago0xf80e866e3c41e76643b4da4a3ffed88100dc5bff  IN   AgoraCrowdsale0 Ether0.000274722
0x55f41bf9abe32e02d55d535997df366eedbb20a89c6d6b6f453705b98e423f3b38 days 2 hrs ago0x9fc1c41c818587a53d1657713191beb5c79ff900  IN   AgoraCrowdsale0 Ether0.00104992
0x390aebfc27ecf37294d5dbd7e64b35b6095bbc5fe1e636ef368b68f5f806ac6355 days 21 hrs ago0xf80e866e3c41e76643b4da4a3ffed88100dc5bff  IN   AgoraCrowdsale0 Ether0.000257124
0x0a7f269e27ef921405a7fc7aa9c3e1432622d6896942b6c5ec340235cf90629564 days 10 hrs ago0xb3e30dea4952551d57cbbd64ab850965179ad2d5  IN   AgoraCrowdsale0 Ether0.0001994695
0x931b4e206bae89e3bf531c873d0aa44c15f0123a0f69c894fc73ebabc6de76ca120 days 18 hrs ago0x00b35e49de29b61fa3b0ad8d8be308543db89520  IN   AgoraCrowdsale0 Ether0.000930823
0x9bff78e6356828b79fc4df389aa6dbaadf5a73ff486333a3992e03ffd693dd43120 days 18 hrs ago0x00b35e49de29b61fa3b0ad8d8be308543db89520  IN   AgoraCrowdsale0 Ether0.001882515
0x6e0efa769351daaf048e119848682799713e2fb191e885815e6949c4dba7933f120 days 19 hrs ago0x00b35e49de29b61fa3b0ad8d8be308543db89520  IN   AgoraCrowdsale0 Ether0.000930823
0x1ca0fe918e98b7a5f23ab1e7f2bc0681ff910dcf27b822c848754d01388ae5ba120 days 19 hrs ago0x00b35e49de29b61fa3b0ad8d8be308543db89520  IN   AgoraCrowdsale0 Ether0.000898392
0xae21702136a191d371ef32bf4664f015b10148990dbbbfc00feceec811347ff4136 days 11 hrs ago0x9675ddf3da09ad448b2101200536bda5a6ec6421  IN   AgoraCrowdsale0 Ether0.000183404
0x8359eaacf48868e363854c4d12d2bd7a0eb506925f128f8a936a86112e2f0dbb140 days 13 hrs ago0x88650fdbfbb5c7933eb52008c4387050b963747d  IN   AgoraCrowdsale0 Ether0.000687765
0x68eeb0b82c23b614ff66dd6443d4aa9abdaf74375a65f1d51bc299e0604ce52d180 days 21 hrs ago0x51f801f3b32837b468cf20eb70d55f4c82de749e  IN   AgoraCrowdsale0 Ether0.000183404
0xf4a525ef67f0cead6820500b383b4a75db155ce1e3cba5088fbd812623e0219a192 days 17 hrs ago0x166c319fff446b3ff73542f11650c795d145f5df  IN   AgoraCrowdsale0 Ether0.000504361
0x09b7a0e6f02b1f2d9213be9ea526baa20daa7b23a0af86bd7aa9fb046c0df1bb212 days 3 hrs ago0x53f190d9c1d8adb60eb6d424724672d9d67d396d  IN   AgoraCrowdsale0 Ether0.00010512
0xfa26d4a0b1db5a2015170045db00de78772269126e07bec1ed342e27ff868cf1225 days 7 hrs ago0x5e5c9142e98020bff5d5fe938a54e7c476d06c75  IN   AgoraCrowdsale0 Ether0.002204832
0x2af76cc08927ddf99c09423f3f9460084f3f96a7bbf2aa0f07c81ac047be40af233 days 1 hr ago0xdd07dd4f5983263b600c48640d270fab5d2f900f  IN   AgoraCrowdsale0 Ether0.000183404
0x77694705c4fe9c396520ec07424d8410847d664b76b792063474f9a04722beef233 days 5 hrs ago0x4b43f97efeb0aae48ae6b7abf1e6452a235911d6  IN   AgoraCrowdsale0 Ether0.00430992
0x290d6a3fb116819951fbe796955cac60ec9c7d6fceff8f8308e75c6913cf9112235 days 8 hrs ago0xfc7dbee6383894b8e15a4ffff0d9f5fb0bcde1e9  IN   AgoraCrowdsale0 Ether0.000366808
0x39fc7140673dc16cb513ed8f01c2b37570864535a86ca6594108057bd951a53b267 days 1 hr ago0x979c755dc12dd40754324fc0a2167a9643573d95  IN   AgoraCrowdsale0 Ether0.000229575
0x3a86638a8b727598de75323875e56d5fd1cfd58d90c1e2a2922d29988e22d6ba267 days 1 hr ago0x9387090545dd146b467da7aabebd9594c31353c5  IN   AgoraCrowdsale0 Ether0.00210368
0xc0a3df02145f0d2a6eced6ae64daff2fabba892e95320b7281d5a7d9c9266b5a286 days 23 hrs ago0xc350d1ecc1c71e41612be8c6c690f8af4dda32e6  IN   AgoraCrowdsale0 Ether0.00631104
0xd17a59fbf22ec111c81c239ed8af9809158b93675cbf8048ab3fdb97420df65f287 days 1 hr ago0x07d391eb3379a039f0e11cb9c3bc73845ece7937  IN   AgoraCrowdsale0 Ether0.00220752
0x8a9698f61592a45177c9b5a312cde0de43431ce455070bcc49124ab66fc8159e292 days 12 hrs ago0x1ed014aec47fae44c9e55bac7662c0b78ae61798  IN   AgoraCrowdsale0 Ether0.0012869
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 1 Internal Transaction

ParentTxHash Block Age From To Value
0xaad454ed5a3b1f2ccc05b0e1e2c4b1775b23991e30b363b0fd91530ca93b52a04431912360 days 4 hrs ago0x2f5e044ad4adac34c8d8df738fac7743eda1409c0x603deff7b4b6467db3e3e4a39a704ab3ee04fa53512.6 Ether
[ Download CSV Export  ] 
Contract Name: AgoraToken
Compiler Text: v0.4.13+commit.fb4cb1a
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.8;

contract ERC20Interface {
  function totalSupply() constant returns (uint256 totalSupply);
  function balanceOf(address _owner) constant returns (uint256 balance);
  function transfer(address _to, uint256 _value) returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
  function approve(address _spender, uint256 _value) returns (bool success);
  function allowance(address _owner, address _spender) constant returns (uint256 remaining);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract AgoraToken is ERC20Interface {

  string public constant name = "Agora";
  string public constant symbol = "AGO";
  uint8  public constant decimals = 18;

  uint256 constant minimumToRaise = 500 ether;
  uint256 constant icoStartBlock = 4116800;
  uint256 constant icoPremiumEndBlock = icoStartBlock + 78776; // Two weeks
  uint256 constant icoEndBlock = icoStartBlock + 315106; // Two months

  address owner;
  uint256 raised = 0;
  uint256 created = 0;

  struct BalanceSnapshot {
    bool initialized;
    uint256 value;
  }

  mapping(address => uint256) shares;
  mapping(address => uint256) balances;
  mapping(address => mapping (address => uint256)) allowed;
  mapping(uint256 => mapping (address => BalanceSnapshot)) balancesAtBlock;

  function AgoraToken() {
    owner = msg.sender;
  }

  // ==========================
  // ERC20 Logic Implementation
  // ==========================

  // Returns the balance of an address.
  function balanceOf(address _owner) constant returns (uint256 balance) {
    return balances[_owner];
  }

  // Make a transfer of AGO between two addresses.
  function transfer(address _to, uint256 _value) returns (bool success) {
    // Freeze for dev team
    require(msg.sender != owner && _to != owner);

    if (balances[msg.sender] >= _value &&
        _value > 0 &&
        balances[_to] + _value > balances[_to]) {
      // We need to register the balance known for the last reference block.
      // That way, we can be sure that when the Claimer wants to check the balance
      // the system can be protected against double-spending AGO tokens claiming.
      uint256 referenceBlockNumber = latestReferenceBlockNumber();
      registerBalanceForReference(msg.sender, referenceBlockNumber);
      registerBalanceForReference(_to, referenceBlockNumber);

      // Standard transfer stuff
      balances[msg.sender] -= _value;
      balances[_to] += _value;
      Transfer(msg.sender, _to, _value);
      return true;
    } else { return false; }
  }

  function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
    // Freeze for dev team
    require(_to != owner);

    if(balances[_from] >= _value &&
       _value > 0 &&
       allowed[_from][msg.sender] >= _value &&
       balances[_to] + _value > balances[_to]) {
      // Same as `transfer` :
      // We need to register the balance known for the last reference block.
      // That way, we can be sure that when the Claimer wants to check the balance
      // the system can be protected against double-spending AGO tokens claiming.
      uint256 referenceBlockNumber = latestReferenceBlockNumber();
      registerBalanceForReference(_from, referenceBlockNumber);
      registerBalanceForReference(_to, referenceBlockNumber);

      // Standard transferFrom stuff
      balances[_from] -= _value;
      balances[_to] += _value;
      allowed[_from][msg.sender] -= _value;
      Transfer(msg.sender, _to, _value);
      return true;
    } else { return false; }
  }

  // Approve a payment from msg.sender account to another one.
  function approve(address _spender, uint256 _value) returns (bool success) {
    // Freeze for dev team
    require(msg.sender != owner);

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  // Checks the allowance of an account against another one. (Works with approval).
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

  // Returns the total supply of token issued.
  function totalSupply() constant returns (uint256 totalSupply) { return created; }

  // ========================
  // ICO Logic Implementation
  // ========================

  // ICO Status overview. Used for Agora landing page
  function icoOverview() constant returns(
    uint256 currentlyRaised,
    uint256 tokensCreated,
    uint256 developersTokens
  ){
    currentlyRaised = raised;
    tokensCreated = created;
    developersTokens = balances[owner];
  }

  // Get Agora tokens with a Ether payment.
  function buy() payable {
    require(block.number > icoStartBlock && block.number < icoEndBlock && msg.sender != owner);

    uint256 tokenAmount = msg.value * ((block.number < icoPremiumEndBlock) ? 550 : 500);

    shares[msg.sender] += msg.value;
    balances[msg.sender] += tokenAmount;
    balances[owner] += tokenAmount / 6;

    raised += msg.value;
    created += tokenAmount;
  }

  // Method use by the creators. Requires the ICO to be a success.
  // Used to retrieve the Ethers raised from the ICO.
  // That way, Agora is becoming possible :).
  function withdraw(uint256 amount) {
    require(block.number > icoEndBlock && raised >= minimumToRaise && msg.sender == owner);
    owner.transfer(amount);
  }

  // Methods use by the ICO investors. Requires the ICO to be a fail.
  function refill() {
    require(block.number > icoEndBlock && raised < minimumToRaise);
    uint256 share = shares[msg.sender];
    shares[msg.sender] = 0;
    msg.sender.transfer(share);
  }

  // ============================
  // Claimer Logic Implementation
  // ============================
  // This part is used by the claimer.
  // The claimer can ask the balance of an user at a reference block.
  // That way, the claimer is protected against double-spending AGO claimings.

  // This method is triggered by `transfer` and `transferFrom`.
  // It saves the balance known at a reference block only if there is no balance
  // saved for this block yet.
  // Meaning that this is a the first transaction since the last reference block,
  // so this balance can be uses as the reference.
  function registerBalanceForReference(address _owner, uint256 referenceBlockNumber) private {
    if (balancesAtBlock[referenceBlockNumber][_owner].initialized) { return; }
    balancesAtBlock[referenceBlockNumber][_owner].initialized = true;
    balancesAtBlock[referenceBlockNumber][_owner].value = balances[_owner];
  }

  // What is the latest reference block number ?
  function latestReferenceBlockNumber() constant returns (uint256 blockNumber) {
    return (block.number - block.number % 157553);
  }

  // What is the balance of an user at a block ?
  // If the user have made (or received) a transfer of AGO token since the
  // last reference block, its balance will be written in the `balancesAtBlock`
  // mapping. So we can retrieve it from here.
  // Otherwise, if the user havn't made a transaction since the last reference
  // block, the balance of AGO token is still good.
  function balanceAtBlock(address _owner, uint256 blockNumber) constant returns (uint256 balance) {
    if(balancesAtBlock[blockNumber][_owner].initialized) {
      return balancesAtBlock[blockNumber][_owner].value;
    }
    return balances[_owner];
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"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":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","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":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"latestReferenceBlockNumber","outputs":[{"name":"blockNumber","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"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":"blockNumber","type":"uint256"}],"name":"balanceAtBlock","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoOverview","outputs":[{"name":"currentlyRaised","type":"uint256"},{"name":"tokensCreated","type":"uint256"},{"name":"developersTokens","type":"uint256"}],"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":[{"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
606060405260006001556000600255341561001957600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b610af6806100466000396000f300606060405236156100d85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100dd578063095ea7b31461016857806318160ddd1461019e57806323b872dd146101c35780632e1a7d4d146101ff578063313ce567146102175780633166615614610240578063538e07591461026557806370a082311461027a57806395d89b41146102ab578063a6f2ae3a14610336578063a9059cbb14610340578063b7d5d74c14610376578063d1397162146103aa578063dd62ed3e146103e1575b600080fd5b34156100e857600080fd5b6100f0610418565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012d5780820151818401525b602001610114565b50505050905090810190601f16801561015a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017357600080fd5b61018a600160a060020a036004351660243561044f565b604051901515815260200160405180910390f35b34156101a957600080fd5b6101b16104d6565b60405190815260200160405180910390f35b34156101ce57600080fd5b61018a600160a060020a03600435811690602435166044356104dd565b604051901515815260200160405180910390f35b341561020a57600080fd5b61021560043561063e565b005b341561022257600080fd5b61022a6106b7565b60405160ff909116815260200160405180910390f35b341561024b57600080fd5b6101b16106bc565b60405190815260200160405180910390f35b341561027057600080fd5b6102156106cd565b005b341561028557600080fd5b6101b1600160a060020a0360043516610743565b60405190815260200160405180910390f35b34156102b657600080fd5b6100f0610762565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012d5780820151818401525b602001610114565b50505050905090810190601f16801561015a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610215610799565b005b341561034b57600080fd5b61018a600160a060020a0360043516602435610865565b604051901515815260200160405180910390f35b341561038157600080fd5b6101b1600160a060020a036004351660243561098c565b60405190815260200160405180910390f35b34156103b557600080fd5b6103bd610a04565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156103ec57600080fd5b6101b1600160a060020a0360043581169060243516610a29565b60405190815260200160405180910390f35b60408051908101604052600581527f41676f7261000000000000000000000000000000000000000000000000000000602082015281565b6000805433600160a060020a039081169116141561046c57600080fd5b600160a060020a03338116600081815260056020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6002545b90565b600080548190600160a060020a03858116911614156104fb57600080fd5b600160a060020a0385166000908152600460205260409020548390108015906105245750600083115b80156105575750600160a060020a0380861660009081526005602090815260408083203390941683529290522054839010155b801561057c5750600160a060020a038416600090815260046020526040902054838101115b15610630576105896106bc565b90506105958582610a56565b61059f8482610a56565b600160a060020a0380861660008181526004602090815260408083208054899003905588851680845281842080548a01905593835260058252808320339095168084529490915290819020805487900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a360019150610635565b600091505b5b509392505050565b6243a0224311801561065b5750681b1ae4d6e2ef50000060015410155b8015610675575060005433600160a060020a039081169116145b151561068057600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f1935050505015156106b357600080fd5b5b50565b601281565b600062026771435b06430390505b90565b60006243a022431180156106eb5750681b1ae4d6e2ef500000600154105b15156106f657600080fd5b50600160a060020a033316600081815260036020526040808220805492905590919082156108fc0290839051600060405180830381858888f1935050505015156106b357600080fd5b5b50565b600160a060020a0381166000908152600460205260409020545b919050565b60408051908101604052600381527f41474f0000000000000000000000000000000000000000000000000000000000602082015281565b6000623ed140431180156107af57506243a02243105b80156107ca575060005433600160a060020a03908116911614155b15156107d557600080fd5b624004f843106107e7576101f46107eb565b6102265b33600160a060020a031660009081526003602090815260408083208054349081019091556004909252909120805461ffff93909316909102918201905590506006815b60008054600160a060020a031681526004602052604090208054929091049091019055600180543401905560028054820190555b50565b60008054819033600160a060020a039081169116148015906108955750600054600160a060020a03858116911614155b15156108a057600080fd5b600160a060020a0333166000908152600460205260409020548390108015906108c95750600083115b80156108ee5750600160a060020a038416600090815260046020526040902054838101115b1561097f576108fb6106bc565b90506109073382610a56565b6109118482610a56565b600160a060020a033381166000818152600460205260408082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a360019150610984565b600091505b5b5092915050565b6000818152600660209081526040808320600160a060020a038616845290915281205460ff16156109e357506000818152600660209081526040808320600160a060020a03861684529091529020600101546104d0565b50600160a060020a0382166000908152600460205260409020545b92915050565b60015460025460008054600160a060020a03168152600460205260409020545b909192565b600160a060020a038083166000908152600560209081526040808320938516835292905220545b92915050565b6000818152600660209081526040808320600160a060020a038616845290915290205460ff1615610a8657610ac6565b6000818152600660209081526040808320600160a060020a0386168452808352818420805460ff1916600190811782556004855292909420549252909101555b50505600a165627a7a7230582034acb57a157e04887351e7f184e20a1e7143301be966564f0d8d22ea8a778f9e0029

   Swarm Source:
bzzr://34acb57a157e04887351e7f184e20a1e7143301be966564f0d8d22ea8a778f9e

 

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.