ETH Price: $3,420.64 (+2.20%)

Contract

0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd
 
Transaction Hash
Method
Block
From
To
Transfer212317672024-11-20 21:55:233 days ago1732139723IN
Moeda Token
0 ETH0.0007493313.80957581
Transfer212097302024-11-17 20:10:596 days ago1731874259IN
Moeda Token
0 ETH0.00194160
Transfer212025602024-11-16 20:10:357 days ago1731787835IN
Moeda Token
0 ETH0.0007191813.25685832
Transfer212021472024-11-16 18:47:357 days ago1731782855IN
Moeda Token
0 ETH0.0020064462
Transfer211949762024-11-15 18:47:118 days ago1731696431IN
Moeda Token
0 ETH0.0009984318.40025852
Transfer211681262024-11-12 0:48:4712 days ago1731372527IN
Moeda Token
0 ETH0.001165631.39602742
Transfer211629292024-11-11 7:24:3512 days ago1731309875IN
Moeda Token
0 ETH0.0004095612.65581007
Approve211623072024-11-11 5:19:4712 days ago1731302387IN
Moeda Token
0 ETH0.0007149915.38558037
Transfer211417032024-11-08 8:23:3515 days ago1731054215IN
Moeda Token
0 ETH0.0005413410.94727899
Transfer211395922024-11-08 1:17:2316 days ago1731028643IN
Moeda Token
0 ETH0.0004460213.79265136
Transfer211394982024-11-08 0:58:3516 days ago1731027515IN
Moeda Token
0 ETH0.0007480613.79226528
Transfer211365562024-11-07 15:05:4716 days ago1730991947IN
Moeda Token
0 ETH0.0011578323.40851597
Approve211365042024-11-07 14:55:2316 days ago1730991323IN
Moeda Token
0 ETH0.0013728629.40508449
Transfer211364692024-11-07 14:48:1116 days ago1730990891IN
Moeda Token
0 ETH0.0010048818.5192035
Approve211352512024-11-07 10:42:4716 days ago1730976167IN
Moeda Token
0 ETH0.0008071717.28879998
Transfer211352252024-11-07 10:37:3516 days ago1730975855IN
Moeda Token
0 ETH0.0009063316.7104209
Transfer211040982024-11-03 2:22:2320 days ago1730600543IN
Moeda Token
0 ETH0.00032015.90968955
Transfer210988682024-11-02 8:48:3521 days ago1730537315IN
Moeda Token
0 ETH0.000240726.48197156
Transfer210976762024-11-02 4:48:5921 days ago1730522939IN
Moeda Token
0 ETH0.00019185.1629758
Transfer210964822024-11-02 0:49:1122 days ago1730508551IN
Moeda Token
0 ETH0.00023516.32840987
Transfer210952872024-11-01 20:48:2322 days ago1730494103IN
Moeda Token
0 ETH0.000285727.69352107
Transfer210940952024-11-01 16:48:5922 days ago1730479739IN
Moeda Token
0 ETH0.0007432520.00683927
Transfer210940922024-11-01 16:48:2322 days ago1730479703IN
Moeda Token
0 ETH0.0007084919.07725628
Transfer210929022024-11-01 12:49:2322 days ago1730465363IN
Moeda Token
0 ETH0.0005125413.7965831
Transfer210928972024-11-01 12:48:2322 days ago1730465303IN
Moeda Token
0 ETH0.0004738612.75960095
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MoedaToken

Compiler Version
v0.4.16+commit.d7661dd9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-08-27
*/

pragma solidity ^0.4.15;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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 constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    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 {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

/**
 * @title Contracts that should not own Tokens
 * @author Remco Bloemen <remco@2Ï€.com>
 * @dev This blocks incoming ERC23 tokens to prevent accidental loss of tokens.
 * Should tokens (any ERC20Basic compatible) end up in the contract, it allows the
 * owner to reclaim the tokens.
 */
contract HasNoTokens is Ownable {

 /**
  * @dev Reject all ERC23 compatible tokens
  * @param from_ address The address that is transferring the tokens
  * @param value_ uint256 the amount of the specified token
  * @param data_ Bytes The data passed from the caller.
  */
  function tokenFallback(address from_, uint256 value_, bytes data_) external {
    revert();
  }

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param tokenAddr address The address of the token contract
   */
  function reclaimToken(address tokenAddr) external onlyOwner {
    ERC20Basic tokenInst = ERC20Basic(tokenAddr);
    uint256 balance = tokenInst.balanceOf(this);
    tokenInst.transfer(owner, balance);
  }
}

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

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) returns (bool);
  function approve(address spender, uint256 value) returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

  mapping(address => uint256) balances;

  /**
  * @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) returns (bool) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_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 returns (uint256 balance) {
    return balances[_owner];
  }

}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) 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 amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

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

  /**
   * @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 specifing the amount of tokens still avaible for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}

contract MigrationAgent {
  /*
    MigrationAgent contracts need to have this exact constant!
    it is intended to be identify the contract, since there is no way to tell
    if a contract is indeed an instance of the right type of contract otherwise
  */
  uint256 public constant MIGRATE_MAGIC_ID = 0x6e538c0d750418aae4131a91e5a20363;

  /*
    A contract implementing this interface is assumed to implement the neccessary
    access controls. E.g;
    * token being migrated FROM is the only one allowed to call migrateTo
    * token being migrated TO has a minting function that can only be called by
      the migration agent
  */
  function migrateTo(address beneficiary, uint256 amount) external;
}

/// @title Moeda Loyalty Points token contract
/// @author Erik Mossberg
contract MoedaToken is StandardToken, Ownable, HasNoTokens {
  string public constant name = "Moeda Loyalty Points";
  string public constant symbol = "MDA";
  uint8 public constant decimals = 18;

  // The migration agent is used to be to allow opt-in transfer of tokens to a
  // new token contract. This could be set sometime in the future if additional
  // functionality needs be added.
  MigrationAgent public migrationAgent;

  // used to ensure that a given address is an instance of a particular contract
  uint256 constant AGENT_MAGIC_ID = 0x6e538c0d750418aae4131a91e5a20363;
  uint256 public totalMigrated;

  uint constant TOKEN_MULTIPLIER = 10**uint256(decimals);
  // don't allow creation of more than this number of tokens
  uint public constant MAX_TOKENS = 20000000 * TOKEN_MULTIPLIER;

  // transfers are locked during minting
  bool public mintingFinished;

  // Log when tokens are migrated to a new contract
  event LogMigration(address indexed spender, address grantee, uint256 amount);
  event LogCreation(address indexed donor, uint256 tokensReceived);
  event LogDestruction(address indexed sender, uint256 amount);
  event LogMintingFinished();

  modifier afterMinting() {
    require(mintingFinished);
    _;
  }

  modifier canTransfer(address recipient) {
    require(mintingFinished && recipient != address(0));
    _;
  }

  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /// @dev Create moeda token and assign partner allocations
  function MoedaToken() {
    // manual distribution
    issueTokens();
  }

  function issueTokens() internal {
    mint(0x2f37be861699b6127881693010596B4bDD146f5e, MAX_TOKENS);
  }

  /// @dev start a migration to a new contract
  /// @param agent address of contract handling migration
  function setMigrationAgent(address agent) external onlyOwner afterMinting {
    require(agent != address(0) && isContract(agent));
    require(MigrationAgent(agent).MIGRATE_MAGIC_ID() == AGENT_MAGIC_ID);
    require(migrationAgent == address(0));
    migrationAgent = MigrationAgent(agent);
  }

  function isContract(address addr) internal constant returns (bool) {
    uint256 size;
    assembly { size := extcodesize(addr) }
    return size > 0;
  }

  /// @dev move a given amount of tokens a new contract (destroying them here)
  /// @param beneficiary address that will get tokens in new contract
  /// @param amount the number of tokens to migrate
  function migrate(address beneficiary, uint256 amount) external afterMinting {
    require(beneficiary != address(0));
    require(migrationAgent != address(0));
    require(amount > 0);

    // safemath subtraction will throw if balance < amount
    balances[msg.sender] = balances[msg.sender].sub(amount);
    totalSupply = totalSupply.sub(amount);
    totalMigrated = totalMigrated.add(amount);
    migrationAgent.migrateTo(beneficiary, amount);

    LogMigration(msg.sender, beneficiary, amount);
  }

  /// @dev destroy a given amount of tokens owned by sender
  // anyone that owns tokens can destroy them, reducing the total supply
  function burn(uint256 amount) external {
    require(amount > 0);
    balances[msg.sender] = balances[msg.sender].sub(amount);
    totalSupply = totalSupply.sub(amount);

    LogDestruction(msg.sender, amount);
  }

  /// @dev unlock transfers
  function unlock() external onlyOwner canMint {
    mintingFinished = true;
    LogMintingFinished();
  }

  /// @dev create tokens, only usable before minting has ended
  /// @param recipient address that will receive the created tokens
  /// @param amount the number of tokens to create
  function mint(address recipient, uint256 amount) internal canMint {
    require(amount > 0);
    require(totalSupply.add(amount) <= MAX_TOKENS);

    balances[recipient] = balances[recipient].add(amount);
    totalSupply = totalSupply.add(amount);

    LogCreation(recipient, amount);
  }

  // only allowed after minting has ended
  // note: transfers to null address not allowed, use burn(value)
  function transfer(address to, uint _value)
  public canTransfer(to) returns (bool)
  {
    return super.transfer(to, _value);
  }

  // only allowed after minting has ended
  // note: transfers to null address not allowed, use burn(value)
  function transferFrom(address from, address to, uint value)
  public canTransfer(to) returns (bool)
  {
    return super.transferFrom(from, to, value);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"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":false,"inputs":[{"name":"tokenAddr","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"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":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setMigrationAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migrationAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalMigrated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","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":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"migrate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"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":"MAX_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"grantee","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogMigration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"donor","type":"address"},{"indexed":false,"name":"tokensReceived","type":"uint256"}],"name":"LogCreation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDestruction","type":"event"},{"anonymous":false,"inputs":[],"name":"LogMintingFinished","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"},{"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"}]

606060405234156200001057600080fd5b5b5b60038054600160a060020a03191633600160a060020a03161790555b6200004664010000000062000e876200004d82021704565b5b620001a9565b62000086732f37be861699b6127881693010596b4bdd146f5e6a108b2a2c2802909400000064010000000062000eb36200008982021704565b5b565b60065460ff16156200009a57600080fd5b60008111620000a857600080fd5b6000546a108b2a2c2802909400000090620000d2908364010000000062000e6d6200018e82021704565b1115620000de57600080fd5b600160a060020a03821660009081526001602052604090205462000111908264010000000062000e6d6200018e82021704565b600160a060020a0383166000908152600160205260408120919091555462000148908264010000000062000e6d6200018e82021704565b600055600160a060020a0382167f6d3add512fa635c40935b84c7df270a56e091dbfc08739b1d929d000e4a542a18260405190815260200160405180910390a25b5b5050565b6000828201838110156200019e57fe5b8091505b5092915050565b610fc380620001b96000396000f300606060405236156101015763ffffffff60e060020a60003504166305d2035b811461010657806306fdde031461012d578063095ea7b3146101b857806317ffc320146101ee57806318160ddd1461020f57806323b872dd14610234578063313ce5671461027057806342966c681461029957806370a08231146102b157806375e2ff65146102e25780638328dbcd146103035780638da5cb5b1461033257806395a0f5eb1461036157806395d89b4114610386578063a69df4b514610411578063a9059cbb14610426578063ad68ebf71461045c578063c0ee0b8a14610480578063dd62ed3e146104b1578063f2fde38b146104e8578063f47c84c514610509575b600080fd5b341561011157600080fd5b61011961052e565b604051901515815260200160405180910390f35b341561013857600080fd5b610140610537565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561017d5780820151818401525b602001610164565b50505050905090810190601f1680156101aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c357600080fd5b610119600160a060020a036004351660243561056e565b604051901515815260200160405180910390f35b34156101f957600080fd5b61020d600160a060020a0360043516610615565b005b341561021a57600080fd5b610222610731565b60405190815260200160405180910390f35b341561023f57600080fd5b610119600160a060020a0360043581169060243516604435610737565b604051901515815260200160405180910390f35b341561027b57600080fd5b610283610778565b60405160ff909116815260200160405180910390f35b34156102a457600080fd5b61020d60043561077d565b005b34156102bc57600080fd5b610222600160a060020a0360043516610824565b60405190815260200160405180910390f35b34156102ed57600080fd5b61020d600160a060020a0360043516610843565b005b341561030e57600080fd5b610316610959565b604051600160a060020a03909116815260200160405180910390f35b341561033d57600080fd5b610316610968565b604051600160a060020a03909116815260200160405180910390f35b341561036c57600080fd5b610222610977565b60405190815260200160405180910390f35b341561039157600080fd5b61014061097d565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561017d5780820151818401525b602001610164565b50505050905090810190601f1680156101aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041c57600080fd5b61020d6109b4565b005b341561043157600080fd5b610119600160a060020a0360043516602435610a1d565b604051901515815260200160405180910390f35b341561046757600080fd5b61020d600160a060020a0360043516602435610a5c565b005b341561048b57600080fd5b61020d60048035600160a060020a0316906024803591604435918201910135610101565b005b34156104bc57600080fd5b610222600160a060020a0360043581169060243516610bde565b60405190815260200160405180910390f35b34156104f357600080fd5b61020d600160a060020a0360043516610c0b565b005b341561051457600080fd5b610222610c63565b60405190815260200160405180910390f35b60065460ff1681565b60408051908101604052601481527f4d6f656461204c6f79616c747920506f696e7473000000000000000000000000602082015281565b60008115806105a05750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b15156105ab57600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600354600090819033600160a060020a0390811691161461063557600080fd5b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561068f57600080fd5b6102c65a03f115156106a057600080fd5b5050506040518051600354909250600160a060020a03808516925063a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561070f57600080fd5b6102c65a03f1151561072057600080fd5b505050604051805150505b5b505050565b60005481565b600654600090839060ff1680156107565750600160a060020a03811615155b151561076157600080fd5b61076c858585610c72565b91505b5b509392505050565b601281565b6000811161078a57600080fd5b600160a060020a0333166000908152600160205260409020546107b3908263ffffffff610d8716565b600160a060020a033316600090815260016020526040812091909155546107e0908263ffffffff610d8716565b600055600160a060020a0333167f08a381875cba5d2c4e871adcb72ddeee26886849567c5492f52eb5dcd51406e48260405190815260200160405180910390a25b50565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461085e57600080fd5b60065460ff16151561086f57600080fd5b600160a060020a0381161580159061088b575061088b81610d9e565b5b151561089757600080fd5b6f6e538c0d750418aae4131a91e5a2036381600160a060020a0316633d1bcac06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108ee57600080fd5b6102c65a03f115156108ff57600080fd5b5050506040518051905014151561091557600080fd5b600454600160a060020a03161561092b57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600454600160a060020a031681565b600354600160a060020a031681565b60055481565b60408051908101604052600381527f4d44410000000000000000000000000000000000000000000000000000000000602082015281565b60035433600160a060020a039081169116146109cf57600080fd5b60065460ff16156109df57600080fd5b6006805460ff191660011790557f6cb020f8135880647f26f417a2afa43b38dcc9eb771cfc1c524bdf64f02d181b60405160405180910390a15b5b5b565b600654600090839060ff168015610a3c5750600160a060020a03811615155b1515610a4757600080fd5b610a518484610dad565b91505b5b5092915050565b60065460ff161515610a6d57600080fd5b600160a060020a0382161515610a8257600080fd5b600454600160a060020a03161515610a9957600080fd5b60008111610aa657600080fd5b600160a060020a033316600090815260016020526040902054610acf908263ffffffff610d8716565b600160a060020a03331660009081526001602052604081209190915554610afc908263ffffffff610d8716565b600055600554610b12908263ffffffff610e6d16565b600555600454600160a060020a0316630d213d31838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b6b57600080fd5b6102c65a03f11515610b7c57600080fd5b50505033600160a060020a03167f5387614dd8d042f434b2b210fd289b0688bfb31bfeb0b26ae519b1627bde45f88383604051600160a060020a03909216825260208201526040908101905180910390a25b5b5050565b600080fd5b50505050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610c2657600080fd5b600160a060020a03811615610821576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b6a108b2a2c2802909400000081565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610cb9908463ffffffff610e6d16565b600160a060020a038086166000908152600160205260408082209390935590871681522054610cee908463ffffffff610d8716565b600160a060020a038616600090815260016020526040902055610d17818463ffffffff610d8716565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600082821115610d9357fe5b508082035b92915050565b6000813b908111905b50919050565b600160a060020a033316600090815260016020526040812054610dd6908363ffffffff610d8716565b600160a060020a033381166000908152600160205260408082209390935590851681522054610e0b908363ffffffff610e6d16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610e7c57fe5b8091505b5092915050565b610a19732f37be861699b6127881693010596b4bdd146f5e6a108b2a2c28029094000000610eb3565b5b565b60065460ff1615610ec357600080fd5b60008111610ed057600080fd5b6000546a108b2a2c2802909400000090610ef0908363ffffffff610e6d16565b1115610efb57600080fd5b600160a060020a038216600090815260016020526040902054610f24908263ffffffff610e6d16565b600160a060020a03831660009081526001602052604081209190915554610f51908263ffffffff610e6d16565b600055600160a060020a0382167f6d3add512fa635c40935b84c7df270a56e091dbfc08739b1d929d000e4a542a18260405190815260200160405180910390a25b5b50505600a165627a7a723058208e25c43bf76f8938a3227efe2a86ea148c0c8748566fd8f8806419f8373e72b10029

Deployed Bytecode

0x606060405236156101015763ffffffff60e060020a60003504166305d2035b811461010657806306fdde031461012d578063095ea7b3146101b857806317ffc320146101ee57806318160ddd1461020f57806323b872dd14610234578063313ce5671461027057806342966c681461029957806370a08231146102b157806375e2ff65146102e25780638328dbcd146103035780638da5cb5b1461033257806395a0f5eb1461036157806395d89b4114610386578063a69df4b514610411578063a9059cbb14610426578063ad68ebf71461045c578063c0ee0b8a14610480578063dd62ed3e146104b1578063f2fde38b146104e8578063f47c84c514610509575b600080fd5b341561011157600080fd5b61011961052e565b604051901515815260200160405180910390f35b341561013857600080fd5b610140610537565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561017d5780820151818401525b602001610164565b50505050905090810190601f1680156101aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c357600080fd5b610119600160a060020a036004351660243561056e565b604051901515815260200160405180910390f35b34156101f957600080fd5b61020d600160a060020a0360043516610615565b005b341561021a57600080fd5b610222610731565b60405190815260200160405180910390f35b341561023f57600080fd5b610119600160a060020a0360043581169060243516604435610737565b604051901515815260200160405180910390f35b341561027b57600080fd5b610283610778565b60405160ff909116815260200160405180910390f35b34156102a457600080fd5b61020d60043561077d565b005b34156102bc57600080fd5b610222600160a060020a0360043516610824565b60405190815260200160405180910390f35b34156102ed57600080fd5b61020d600160a060020a0360043516610843565b005b341561030e57600080fd5b610316610959565b604051600160a060020a03909116815260200160405180910390f35b341561033d57600080fd5b610316610968565b604051600160a060020a03909116815260200160405180910390f35b341561036c57600080fd5b610222610977565b60405190815260200160405180910390f35b341561039157600080fd5b61014061097d565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561017d5780820151818401525b602001610164565b50505050905090810190601f1680156101aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041c57600080fd5b61020d6109b4565b005b341561043157600080fd5b610119600160a060020a0360043516602435610a1d565b604051901515815260200160405180910390f35b341561046757600080fd5b61020d600160a060020a0360043516602435610a5c565b005b341561048b57600080fd5b61020d60048035600160a060020a0316906024803591604435918201910135610101565b005b34156104bc57600080fd5b610222600160a060020a0360043581169060243516610bde565b60405190815260200160405180910390f35b34156104f357600080fd5b61020d600160a060020a0360043516610c0b565b005b341561051457600080fd5b610222610c63565b60405190815260200160405180910390f35b60065460ff1681565b60408051908101604052601481527f4d6f656461204c6f79616c747920506f696e7473000000000000000000000000602082015281565b60008115806105a05750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b15156105ab57600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600354600090819033600160a060020a0390811691161461063557600080fd5b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561068f57600080fd5b6102c65a03f115156106a057600080fd5b5050506040518051600354909250600160a060020a03808516925063a9059cbb91168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561070f57600080fd5b6102c65a03f1151561072057600080fd5b505050604051805150505b5b505050565b60005481565b600654600090839060ff1680156107565750600160a060020a03811615155b151561076157600080fd5b61076c858585610c72565b91505b5b509392505050565b601281565b6000811161078a57600080fd5b600160a060020a0333166000908152600160205260409020546107b3908263ffffffff610d8716565b600160a060020a033316600090815260016020526040812091909155546107e0908263ffffffff610d8716565b600055600160a060020a0333167f08a381875cba5d2c4e871adcb72ddeee26886849567c5492f52eb5dcd51406e48260405190815260200160405180910390a25b50565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461085e57600080fd5b60065460ff16151561086f57600080fd5b600160a060020a0381161580159061088b575061088b81610d9e565b5b151561089757600080fd5b6f6e538c0d750418aae4131a91e5a2036381600160a060020a0316633d1bcac06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156108ee57600080fd5b6102c65a03f115156108ff57600080fd5b5050506040518051905014151561091557600080fd5b600454600160a060020a03161561092b57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600454600160a060020a031681565b600354600160a060020a031681565b60055481565b60408051908101604052600381527f4d44410000000000000000000000000000000000000000000000000000000000602082015281565b60035433600160a060020a039081169116146109cf57600080fd5b60065460ff16156109df57600080fd5b6006805460ff191660011790557f6cb020f8135880647f26f417a2afa43b38dcc9eb771cfc1c524bdf64f02d181b60405160405180910390a15b5b5b565b600654600090839060ff168015610a3c5750600160a060020a03811615155b1515610a4757600080fd5b610a518484610dad565b91505b5b5092915050565b60065460ff161515610a6d57600080fd5b600160a060020a0382161515610a8257600080fd5b600454600160a060020a03161515610a9957600080fd5b60008111610aa657600080fd5b600160a060020a033316600090815260016020526040902054610acf908263ffffffff610d8716565b600160a060020a03331660009081526001602052604081209190915554610afc908263ffffffff610d8716565b600055600554610b12908263ffffffff610e6d16565b600555600454600160a060020a0316630d213d31838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610b6b57600080fd5b6102c65a03f11515610b7c57600080fd5b50505033600160a060020a03167f5387614dd8d042f434b2b210fd289b0688bfb31bfeb0b26ae519b1627bde45f88383604051600160a060020a03909216825260208201526040908101905180910390a25b5b5050565b600080fd5b50505050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610c2657600080fd5b600160a060020a03811615610821576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b6a108b2a2c2802909400000081565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610cb9908463ffffffff610e6d16565b600160a060020a038086166000908152600160205260408082209390935590871681522054610cee908463ffffffff610d8716565b600160a060020a038616600090815260016020526040902055610d17818463ffffffff610d8716565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600082821115610d9357fe5b508082035b92915050565b6000813b908111905b50919050565b600160a060020a033316600090815260016020526040812054610dd6908363ffffffff610d8716565b600160a060020a033381166000908152600160205260408082209390935590851681522054610e0b908363ffffffff610e6d16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610e7c57fe5b8091505b5092915050565b610a19732f37be861699b6127881693010596b4bdd146f5e6a108b2a2c28029094000000610eb3565b5b565b60065460ff1615610ec357600080fd5b60008111610ed057600080fd5b6000546a108b2a2c2802909400000090610ef0908363ffffffff610e6d16565b1115610efb57600080fd5b600160a060020a038216600090815260016020526040902054610f24908263ffffffff610e6d16565b600160a060020a03831660009081526001602052604081209190915554610f51908263ffffffff610e6d16565b600055600160a060020a0382167f6d3add512fa635c40935b84c7df270a56e091dbfc08739b1d929d000e4a542a18260405190815260200160405180910390a25b5b50505600a165627a7a723058208e25c43bf76f8938a3227efe2a86ea148c0c8748566fd8f8806419f8373e72b10029

Swarm Source

bzzr://8e25c43bf76f8938a3227efe2a86ea148c0c8748566fd8f8806419f8373e72b1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.