More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 272 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 23927151 | 105 days ago | IN | 0 ETH | 0.00000555 | ||||
| Transfer | 23927098 | 105 days ago | IN | 0 ETH | 0.00001679 | ||||
| Deposit | 23927094 | 105 days ago | IN | 0.04 ETH | 0.00001065 | ||||
| Transfer | 23927074 | 105 days ago | IN | 0 ETH | 0.00002088 | ||||
| Deposit | 23927072 | 105 days ago | IN | 0.03932663 ETH | 0.00001324 | ||||
| Transfer | 23927057 | 105 days ago | IN | 0 ETH | 0.00002573 | ||||
| Deposit | 23927056 | 105 days ago | IN | 0.0395499 ETH | 0.00001631 | ||||
| Approve And Call | 23926963 | 105 days ago | IN | 0 ETH | 0.00003722 | ||||
| Deposit | 23926961 | 105 days ago | IN | 0.01 ETH | 0.00002273 | ||||
| Transfer | 23926894 | 105 days ago | IN | 0 ETH | 0.00004734 | ||||
| Deposit | 23926893 | 105 days ago | IN | 0.01 ETH | 0.00003022 | ||||
| Withdraw | 23926780 | 105 days ago | IN | 0 ETH | 0.0000357 | ||||
| Transfer | 23926727 | 105 days ago | IN | 0 ETH | 0.00006871 | ||||
| Deposit | 23926722 | 105 days ago | IN | 0.01 ETH | 0.00002541 | ||||
| Transfer | 23926710 | 105 days ago | IN | 0 ETH | 0.00008819 | ||||
| Deposit | 23926707 | 105 days ago | IN | 0.01 ETH | 0.00003177 | ||||
| Transfer | 23926675 | 105 days ago | IN | 0 ETH | 0.00011159 | ||||
| Deposit | 23926642 | 105 days ago | IN | 0.01 ETH | 0.0000676 | ||||
| Withdraw | 23907860 | 108 days ago | IN | 0 ETH | 0.00007733 | ||||
| Deposit | 22969263 | 239 days ago | IN | 0.0005 ETH | 0.00005614 | ||||
| Deposit | 22969245 | 239 days ago | IN | 0.0001 ETH | 0.00007123 | ||||
| Transfer | 22969244 | 239 days ago | IN | 0 ETH | 0.00005847 | ||||
| Transfer | 22969243 | 239 days ago | IN | 0 ETH | 0.00005481 | ||||
| Transfer | 22969241 | 239 days ago | IN | 0 ETH | 0.000055 | ||||
| Deposit | 22969240 | 239 days ago | IN | 0.0002 ETH | 0.00007366 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23927098 | 105 days ago | 0.04 ETH | ||||
| Transfer | 23927074 | 105 days ago | 0.03932663 ETH | ||||
| Transfer | 23927057 | 105 days ago | 0.0395499 ETH | ||||
| Transfer | 23926963 | 105 days ago | 0.01 ETH | ||||
| Transfer | 23926894 | 105 days ago | 0.01 ETH | ||||
| Transfer | 23926780 | 105 days ago | 0.03 ETH | ||||
| Transfer | 23926727 | 105 days ago | 0.03 ETH | ||||
| Transfer | 23926719 | 105 days ago | 0.01 ETH | ||||
| Deposit | 23926719 | 105 days ago | 0.01 ETH | ||||
| Transfer | 23926710 | 105 days ago | 0.02 ETH | ||||
| Transfer | 23926675 | 105 days ago | 0.01 ETH | ||||
| Transfer | 23926625 | 105 days ago | 0.01 ETH | ||||
| Deposit | 23926625 | 105 days ago | 0.01 ETH | ||||
| Transfer | 23907860 | 108 days ago | 5 ETH | ||||
| Transfer | 22969197 | 239 days ago | 0.002 ETH | ||||
| Transfer | 22969118 | 239 days ago | 0.0013 ETH | ||||
| Transfer | 22967857 | 239 days ago | 100 ETH | ||||
| Deposit | 22967857 | 239 days ago | 100 ETH | ||||
| Transfer | 22967538 | 239 days ago | 342.50132227 ETH | ||||
| Deposit | 22967538 | 239 days ago | 342.50132227 ETH | ||||
| Transfer | 22966930 | 239 days ago | 0.001 ETH | ||||
| Transfer | 22966752 | 239 days ago | 0.001 ETH | ||||
| Transfer | 21323750 | 469 days ago | 4 ETH | ||||
| Transfer | 18808740 | 821 days ago | 4 ETH | ||||
| Transfer | 18513596 | 862 days ago | 2 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EtherToken
Compiler Version
v0.4.15+commit.bbb8e64f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-11-10
*/
pragma solidity 0.4.15;
/// @title provides subject to role checking logic
contract IAccessPolicy {
////////////////////////
// Public functions
////////////////////////
/// @notice We don't make this function constant to allow for state-updating access controls such as rate limiting.
/// @dev checks if subject belongs to requested role for particular object
/// @param subject address to be checked against role, typically msg.sender
/// @param role identifier of required role
/// @param object contract instance context for role checking, typically contract requesting the check
/// @param verb additional data, in current AccessControll implementation msg.sig
/// @return if subject belongs to a role
function allowed(
address subject,
bytes32 role,
address object,
bytes4 verb
)
public
returns (bool);
}
/// @title enables access control in implementing contract
/// @dev see AccessControlled for implementation
contract IAccessControlled {
////////////////////////
// Events
////////////////////////
/// @dev must log on access policy change
event LogAccessPolicyChanged(
address controller,
IAccessPolicy oldPolicy,
IAccessPolicy newPolicy
);
////////////////////////
// Public functions
////////////////////////
/// @dev allows to change access control mechanism for this contract
/// this method must be itself access controlled, see AccessControlled implementation and notice below
/// @notice it is a huge issue for Solidity that modifiers are not part of function signature
/// then interfaces could be used for example to control access semantics
/// @param newPolicy new access policy to controll this contract
/// @param newAccessController address of ROLE_ACCESS_CONTROLLER of new policy that can set access to this contract
function setAccessPolicy(IAccessPolicy newPolicy, address newAccessController)
public;
function accessPolicy()
public
constant
returns (IAccessPolicy);
}
contract StandardRoles {
////////////////////////
// Constants
////////////////////////
// @notice Soldity somehow doesn't evaluate this compile time
// @dev role which has rights to change permissions and set new policy in contract, keccak256("AccessController")
bytes32 internal constant ROLE_ACCESS_CONTROLLER = 0xac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da;
}
/// @title Granular code execution permissions
/// @notice Intended to replace existing Ownable pattern with more granular permissions set to execute smart contract functions
/// for each function where 'only' modifier is applied, IAccessPolicy implementation is called to evaluate if msg.sender belongs to required role for contract being called.
/// Access evaluation specific belong to IAccessPolicy implementation, see RoleBasedAccessPolicy for details.
/// @dev Should be inherited by a contract requiring such permissions controll. IAccessPolicy must be provided in constructor. Access policy may be replaced to a different one
/// by msg.sender with ROLE_ACCESS_CONTROLLER role
contract AccessControlled is IAccessControlled, StandardRoles {
////////////////////////
// Mutable state
////////////////////////
IAccessPolicy private _accessPolicy;
////////////////////////
// Modifiers
////////////////////////
/// @dev limits function execution only to senders assigned to required 'role'
modifier only(bytes32 role) {
require(_accessPolicy.allowed(msg.sender, role, this, msg.sig));
_;
}
////////////////////////
// Constructor
////////////////////////
function AccessControlled(IAccessPolicy policy) internal {
require(address(policy) != 0x0);
_accessPolicy = policy;
}
////////////////////////
// Public functions
////////////////////////
//
// Implements IAccessControlled
//
function setAccessPolicy(IAccessPolicy newPolicy, address newAccessController)
public
only(ROLE_ACCESS_CONTROLLER)
{
// ROLE_ACCESS_CONTROLLER must be present
// under the new policy. This provides some
// protection against locking yourself out.
require(newPolicy.allowed(newAccessController, ROLE_ACCESS_CONTROLLER, this, msg.sig));
// We can now safely set the new policy without foot shooting.
IAccessPolicy oldPolicy = _accessPolicy;
_accessPolicy = newPolicy;
// Log event
LogAccessPolicyChanged(msg.sender, oldPolicy, newPolicy);
}
function accessPolicy()
public
constant
returns (IAccessPolicy)
{
return _accessPolicy;
}
}
contract IsContract {
////////////////////////
// Internal functions
////////////////////////
function isContract(address addr)
internal
constant
returns (bool)
{
uint256 size;
// takes 700 gas
assembly { size := extcodesize(addr) }
return size > 0;
}
}
contract AccessRoles {
////////////////////////
// Constants
////////////////////////
// NOTE: All roles are set to the keccak256 hash of the
// CamelCased role name, i.e.
// ROLE_LOCKED_ACCOUNT_ADMIN = keccak256("LockedAccountAdmin")
// may setup LockedAccount, change disbursal mechanism and set migration
bytes32 internal constant ROLE_LOCKED_ACCOUNT_ADMIN = 0x4675da546d2d92c5b86c4f726a9e61010dce91cccc2491ce6019e78b09d2572e;
// may setup whitelists and abort whitelisting contract with curve rollback
bytes32 internal constant ROLE_WHITELIST_ADMIN = 0xaef456e7c864418e1d2a40d996ca4febf3a7e317fe3af5a7ea4dda59033bbe5c;
// May issue (generate) Neumarks
bytes32 internal constant ROLE_NEUMARK_ISSUER = 0x921c3afa1f1fff707a785f953a1e197bd28c9c50e300424e015953cbf120c06c;
// May burn Neumarks it owns
bytes32 internal constant ROLE_NEUMARK_BURNER = 0x19ce331285f41739cd3362a3ec176edffe014311c0f8075834fdd19d6718e69f;
// May create new snapshots on Neumark
bytes32 internal constant ROLE_SNAPSHOT_CREATOR = 0x08c1785afc57f933523bc52583a72ce9e19b2241354e04dd86f41f887e3d8174;
// May enable/disable transfers on Neumark
bytes32 internal constant ROLE_TRANSFER_ADMIN = 0xb6527e944caca3d151b1f94e49ac5e223142694860743e66164720e034ec9b19;
// may reclaim tokens/ether from contracts supporting IReclaimable interface
bytes32 internal constant ROLE_RECLAIMER = 0x0542bbd0c672578966dcc525b30aa16723bb042675554ac5b0362f86b6e97dc5;
// represents legally platform operator in case of forks and contracts with legal agreement attached. keccak256("PlatformOperatorRepresentative")
bytes32 internal constant ROLE_PLATFORM_OPERATOR_REPRESENTATIVE = 0xb2b321377653f655206f71514ff9f150d0822d062a5abcf220d549e1da7999f0;
// allows to deposit EUR-T and allow addresses to send and receive EUR-T. keccak256("EurtDepositManager")
bytes32 internal constant ROLE_EURT_DEPOSIT_MANAGER = 0x7c8ecdcba80ce87848d16ad77ef57cc196c208fc95c5638e4a48c681a34d4fe7;
}
contract IBasicToken {
////////////////////////
// Events
////////////////////////
event Transfer(
address indexed from,
address indexed to,
uint256 amount);
////////////////////////
// Public functions
////////////////////////
/// @dev This function makes it easy to get the total number of tokens
/// @return The total number of tokens
function totalSupply()
public
constant
returns (uint256);
/// @param owner The address that's balance is being requested
/// @return The balance of `owner` at the current block
function balanceOf(address owner)
public
constant
returns (uint256 balance);
/// @notice Send `amount` tokens to `to` from `msg.sender`
/// @param to The address of the recipient
/// @param amount The amount of tokens to be transferred
/// @return Whether the transfer was successful or not
function transfer(address to, uint256 amount)
public
returns (bool success);
}
/// @title allows deriving contract to recover any token or ether that it has balance of
/// @notice note that this opens your contracts to claims from various people saying they lost tokens and they want them back
/// be ready to handle such claims
/// @dev use with care!
/// 1. ROLE_RECLAIMER is allowed to claim tokens, it's not returning tokens to original owner
/// 2. in derived contract that holds any token by design you must override `reclaim` and block such possibility.
/// see LockedAccount as an example
contract Reclaimable is AccessControlled, AccessRoles {
////////////////////////
// Constants
////////////////////////
IBasicToken constant internal RECLAIM_ETHER = IBasicToken(0x0);
////////////////////////
// Public functions
////////////////////////
function reclaim(IBasicToken token)
public
only(ROLE_RECLAIMER)
{
address reclaimer = msg.sender;
if(token == RECLAIM_ETHER) {
reclaimer.transfer(this.balance);
} else {
uint256 balance = token.balanceOf(this);
require(token.transfer(reclaimer, balance));
}
}
}
contract ITokenMetadata {
////////////////////////
// Public functions
////////////////////////
function symbol()
public
constant
returns (string);
function name()
public
constant
returns (string);
function decimals()
public
constant
returns (uint8);
}
/// @title adds token metadata to token contract
/// @dev see Neumark for example implementation
contract TokenMetadata is ITokenMetadata {
////////////////////////
// Immutable state
////////////////////////
// The Token's name: e.g. DigixDAO Tokens
string private NAME;
// An identifier: e.g. REP
string private SYMBOL;
// Number of decimals of the smallest unit
uint8 private DECIMALS;
// An arbitrary versioning scheme
string private VERSION;
////////////////////////
// Constructor
////////////////////////
/// @notice Constructor to set metadata
/// @param tokenName Name of the new token
/// @param decimalUnits Number of decimals of the new token
/// @param tokenSymbol Token Symbol for the new token
/// @param version Token version ie. when cloning is used
function TokenMetadata(
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
string version
)
public
{
NAME = tokenName; // Set the name
SYMBOL = tokenSymbol; // Set the symbol
DECIMALS = decimalUnits; // Set the decimals
VERSION = version;
}
////////////////////////
// Public functions
////////////////////////
function name()
public
constant
returns (string)
{
return NAME;
}
function symbol()
public
constant
returns (string)
{
return SYMBOL;
}
function decimals()
public
constant
returns (uint8)
{
return DECIMALS;
}
function version()
public
constant
returns (string)
{
return VERSION;
}
}
contract IERC223Callback {
////////////////////////
// Public functions
////////////////////////
function onTokenTransfer(
address from,
uint256 amount,
bytes data
)
public;
}
contract IERC223Token is IBasicToken {
/// @dev Departure: We do not log data, it has no advantage over a standard
/// log event. By sticking to the standard log event we
/// stay compatible with constracts that expect and ERC20 token.
// event Transfer(
// address indexed from,
// address indexed to,
// uint256 amount,
// bytes data);
/// @dev Departure: We do not use the callback on regular transfer calls to
/// stay compatible with constracts that expect and ERC20 token.
// function transfer(address to, uint256 amount)
// public
// returns (bool);
////////////////////////
// Public functions
////////////////////////
function transfer(address to, uint256 amount, bytes data)
public
returns (bool);
}
contract IERC20Allowance {
////////////////////////
// Events
////////////////////////
event Approval(
address indexed owner,
address indexed spender,
uint256 amount);
////////////////////////
// Public functions
////////////////////////
/// @dev This function makes it easy to read the `allowed[]` map
/// @param owner The address of the account that owns the token
/// @param spender The address of the account able to transfer the tokens
/// @return Amount of remaining tokens of owner that spender is allowed
/// to spend
function allowance(address owner, address spender)
public
constant
returns (uint256 remaining);
/// @notice `msg.sender` approves `spender` to spend `amount` tokens on
/// its behalf. This is a modified version of the ERC20 approve function
/// to be a little bit safer
/// @param spender The address of the account able to transfer the tokens
/// @param amount The amount of tokens to be approved for transfer
/// @return True if the approval was successful
function approve(address spender, uint256 amount)
public
returns (bool success);
/// @notice Send `amount` tokens to `to` from `from` on the condition it
/// is approved by `from`
/// @param from The address holding the tokens being transferred
/// @param to The address of the recipient
/// @param amount The amount of tokens to be transferred
/// @return True if the transfer was successful
function transferFrom(address from, address to, uint256 amount)
public
returns (bool success);
}
contract IERC20Token is IBasicToken, IERC20Allowance {
}
contract IERC677Callback {
////////////////////////
// Public functions
////////////////////////
// NOTE: This call can be initiated by anyone. You need to make sure that
// it is send by the token (`require(msg.sender == token)`) or make sure
// amount is valid (`require(token.allowance(this) >= amount)`).
function receiveApproval(
address from,
uint256 amount,
address token, // IERC667Token
bytes data
)
public
returns (bool success);
}
contract IERC677Allowance is IERC20Allowance {
////////////////////////
// Public functions
////////////////////////
/// @notice `msg.sender` approves `spender` to send `amount` tokens on
/// its behalf, and then a function is triggered in the contract that is
/// being approved, `spender`. This allows users to use their tokens to
/// interact with contracts in one function call instead of two
/// @param spender The address of the contract able to transfer the tokens
/// @param amount The amount of tokens to be approved for transfer
/// @return True if the function call was successful
function approveAndCall(address spender, uint256 amount, bytes extraData)
public
returns (bool success);
}
contract IERC677Token is IERC20Token, IERC677Allowance {
}
contract Math {
////////////////////////
// Internal functions
////////////////////////
// absolute difference: |v1 - v2|
function absDiff(uint256 v1, uint256 v2)
internal
constant
returns(uint256)
{
return v1 > v2 ? v1 - v2 : v2 - v1;
}
// divide v by d, round up if remainder is 0.5 or more
function divRound(uint256 v, uint256 d)
internal
constant
returns(uint256)
{
return add(v, d/2) / d;
}
// computes decimal decimalFraction 'frac' of 'amount' with maximum precision (multiplication first)
// both amount and decimalFraction must have 18 decimals precision, frac 10**18 represents a whole (100% of) amount
// mind loss of precision as decimal fractions do not have finite binary expansion
// do not use instead of division
function decimalFraction(uint256 amount, uint256 frac)
internal
constant
returns(uint256)
{
// it's like 1 ether is 100% proportion
return proportion(amount, frac, 10**18);
}
// computes part/total of amount with maximum precision (multiplication first)
// part and total must have the same units
function proportion(uint256 amount, uint256 part, uint256 total)
internal
constant
returns(uint256)
{
return divRound(mul(amount, part), total);
}
//
// Open Zeppelin Math library below
//
function mul(uint256 a, uint256 b)
internal
constant
returns (uint256)
{
uint256 c = a * b;
assert(a == 0 || c / a == b);
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;
}
function min(uint256 a, uint256 b)
internal
constant
returns (uint256)
{
return a < b ? a : b;
}
function max(uint256 a, uint256 b)
internal
constant
returns (uint256)
{
return a > b ? a : b;
}
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
*/
contract BasicToken is IBasicToken, Math {
////////////////////////
// Mutable state
////////////////////////
mapping(address => uint256) internal _balances;
uint256 internal _totalSupply;
////////////////////////
// Public functions
////////////////////////
/**
* @dev transfer token for a specified address
* @param to The address to transfer to.
* @param amount The amount to be transferred.
*/
function transfer(address to, uint256 amount)
public
returns (bool)
{
transferInternal(msg.sender, to, amount);
return true;
}
/// @dev This function makes it easy to get the total number of tokens
/// @return The total number of tokens
function totalSupply()
public
constant
returns (uint256)
{
return _totalSupply;
}
/**
* @dev Gets the balance of the specified address.
* @param owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address owner)
public
constant
returns (uint256 balance)
{
return _balances[owner];
}
////////////////////////
// Internal functions
////////////////////////
// actual transfer function called by all public variants
function transferInternal(address from, address to, uint256 amount)
internal
{
require(to != address(0));
_balances[from] = sub(_balances[from], amount);
_balances[to] = add(_balances[to], amount);
Transfer(from, to, amount);
}
}
/**
* @title Standard ERC20 token
*
* @dev Implementation of the standard token.
* @dev https://github.com/ethereum/EIPs/issues/20
* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract StandardToken is
IERC20Token,
BasicToken,
IERC677Token
{
////////////////////////
// Mutable state
////////////////////////
mapping (address => mapping (address => uint256)) private _allowed;
////////////////////////
// Public functions
////////////////////////
//
// Implements ERC20
//
/**
* @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 amount uint256 the amount of tokens to be transferred
*/
function transferFrom(address from, address to, uint256 amount)
public
returns (bool)
{
// check and reset allowance
var allowance = _allowed[from][msg.sender];
_allowed[from][msg.sender] = sub(allowance, amount);
// do the transfer
transferInternal(from, to, amount);
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 amount The amount of tokens to be spent.
*/
function approve(address spender, uint256 amount)
public
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((amount == 0) || (_allowed[msg.sender][spender] == 0));
_allowed[msg.sender][spender] = amount;
Approval(msg.sender, spender, amount);
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)
public
constant
returns (uint256 remaining)
{
return _allowed[owner][spender];
}
//
// Implements IERC677Token
//
function approveAndCall(
address spender,
uint256 amount,
bytes extraData
)
public
returns (bool)
{
require(approve(spender, amount));
// in case of re-entry 1. approval is done 2. msg.sender is different
bool success = IERC677Callback(spender).receiveApproval(
msg.sender,
amount,
this,
extraData
);
require(success);
return true;
}
}
contract EtherToken is
IsContract,
AccessControlled,
StandardToken,
TokenMetadata,
Reclaimable
{
////////////////////////
// Constants
////////////////////////
string private constant NAME = "Ether Token";
string private constant SYMBOL = "ETH-T";
uint8 private constant DECIMALS = 18;
////////////////////////
// Events
////////////////////////
event LogDeposit(
address indexed to,
uint256 amount
);
event LogWithdrawal(
address indexed from,
uint256 amount
);
////////////////////////
// Constructor
////////////////////////
function EtherToken(IAccessPolicy accessPolicy)
AccessControlled(accessPolicy)
StandardToken()
TokenMetadata(NAME, DECIMALS, SYMBOL, "")
Reclaimable()
public
{
}
////////////////////////
// Public functions
////////////////////////
/// deposit msg.value of Ether to msg.sender balance
function deposit()
payable
public
{
_balances[msg.sender] = add(_balances[msg.sender], msg.value);
_totalSupply = add(_totalSupply, msg.value);
LogDeposit(msg.sender, msg.value);
Transfer(address(0), msg.sender, msg.value);
}
/// withdraws and sends 'amount' of ether to msg.sender
function withdraw(uint256 amount)
public
{
require(_balances[msg.sender] >= amount);
_balances[msg.sender] = sub(_balances[msg.sender], amount);
_totalSupply = sub(_totalSupply, amount);
msg.sender.transfer(amount);
LogWithdrawal(msg.sender, amount);
Transfer(msg.sender, address(0), amount);
}
//
// Implements IERC223Token
//
function transfer(address to, uint256 amount, bytes data)
public
returns (bool)
{
transferInternal(msg.sender, to, amount);
// Notify the receiving contract.
if (isContract(to)) {
// in case of re-entry (1) transfer is done (2) msg.sender is different
IERC223Callback(to).onTokenTransfer(msg.sender, amount, data);
}
return true;
}
//
// Overrides Reclaimable
//
/// @notice allows EtherToken to reclaim tokens wrongly sent to its address
/// @dev as EtherToken by design has balance of Ether (native Ethereum token)
/// such reclamation is not allowed
function reclaim(IBasicToken token)
public
{
// forbid reclaiming ETH hold in this contract.
require(token != RECLAIM_ETHER);
Reclaimable.reclaim(token);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","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":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newPolicy","type":"address"},{"name":"newAccessController","type":"address"}],"name":"setAccessPolicy","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":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"accessPolicy","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaim","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"accessPolicy","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"controller","type":"address"},{"indexed":false,"name":"oldPolicy","type":"address"},{"indexed":false,"name":"newPolicy","type":"address"}],"name":"LogAccessPolicyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"}]Contract Creation Code
606060405234156200001057600080fd5b604051602080620014d7833981016040528080519150505b6040805190810160405280600b81526020017f457468657220546f6b656e00000000000000000000000000000000000000000081525060126040805190810160405280600581526020017f4554482d540000000000000000000000000000000000000000000000000000008152506020604051908101604052600081525b845b600160a060020a0381161515620000be57600080fd5b60028054600160a060020a031916600160a060020a0383161790555b506004848051620000f092916020019062000139565b5060058280516200010692916020019062000139565b506006805460ff191660ff851617905560078180516200012b92916020019062000139565b505b505050505b50620001e3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017c57805160ff1916838001178555620001ac565b82800160010185558215620001ac579182015b82811115620001ac5782518255916020019190600101906200018f565b5b50620001bb929150620001bf565b5090565b620001e091905b80821115620001bb5760008155600101620001c6565b5090565b90565b6112e480620001f36000396000f300606060405236156100d55763ffffffff60e060020a60003504166306fdde0381146100da578063095ea7b31461016557806318160ddd1461019b57806323b872dd146101c05780632e1a7d4d146101fc578063313ce5671461021457806354fd4d501461023d57806357875631146102c857806370a08231146102ef57806395d89b4114610320578063a9059cbb146103ab578063be45fd62146103e1578063cae9ca511461045a578063d0e30db0146104d3578063dd62ed3e146104dd578063f5d60a5114610514578063fc772c8b14610543575b600080fd5b34156100e557600080fd5b6100ed610564565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017057600080fd5b610187600160a060020a036004351660243561060d565b604051901515815260200160405180910390f35b34156101a657600080fd5b6101ae6106b4565b60405190815260200160405180910390f35b34156101cb57600080fd5b610187600160a060020a03600435811690602435166044356106bb565b604051901515815260200160405180910390f35b341561020757600080fd5b61021260043561072d565b005b341561021f57600080fd5b610227610850565b60405160ff909116815260200160405180910390f35b341561024857600080fd5b6100ed61085a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d357600080fd5b610212600160a060020a0360043581169060243516610903565b005b34156102fa57600080fd5b6101ae600160a060020a0360043516610b2d565b60405190815260200160405180910390f35b341561032b57600080fd5b6100ed610b4c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b657600080fd5b610187600160a060020a0360043516602435610bf5565b604051901515815260200160405180910390f35b34156103ec57600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c0c95505050505050565b604051901515815260200160405180910390f35b341561046557600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d1495505050505050565b604051901515815260200160405180910390f35b610212610e51565b005b34156104e857600080fd5b6101ae600160a060020a0360043581169060243516610f1c565b60405190815260200160405180910390f35b341561051f57600080fd5b610527610f49565b604051600160a060020a03909116815260200160405180910390f35b341561054e57600080fd5b610212600160a060020a0360043516610f59565b005b61056c6112a6565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b600081158061063f5750600160a060020a03338116600090815260036020908152604080832093871683529290522054155b151561064a57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6001545b90565b600160a060020a038084166000908152600360209081526040808320339094168352929052908120546106ee8184610f7b565b600160a060020a0380871660009081526003602090815260408083203390941683529290522055610720858585610f92565b600191505b509392505050565b600160a060020a0333166000908152602081905260409020548190101561075357600080fd5b600160a060020a0333166000908152602081905260409020546107769082610f7b565b600160a060020a03331660009081526020819052604090205560015461079c9082610f7b565b600155600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156107d057600080fd5b33600160a060020a03167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e918260405190815260200160405180910390a2600033600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b50565b60065460ff165b90565b6108626112a6565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6002546000907fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da90600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b15156109ae57600080fd5b6102c65a03f115156109bf57600080fd5b5050506040518051905015156109d457600080fd5b83600160a060020a0316639085b77f847fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da60010230600035600160e060020a03191660006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b505050604051805190501515610aa357600080fd5b60028054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff198316179092551691507f7d475c32583df95fccc34a6e12df24c1fc9943092cc129b6512013aecba0f136338386604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a15b5b50505050565b600160a060020a0381166000908152602081905260409020545b919050565b610b546112a6565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6000610c02338484610f92565b5060015b92915050565b6000610c19338585610f92565b610c2284611056565b15610d095783600160a060020a031663a4c0ed363385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ca75780820151818401525b602001610c8e565b50505050905090810190601f168015610cd45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515610cf457600080fd5b6102c65a03f11515610d0557600080fd5b5050505b5060015b9392505050565b600080610d21858561060d565b1515610d2c57600080fd5b84600160a060020a0316638f4ffcb1338630876000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610dce5780820151818401525b602001610db5565b50505050905090810190601f168015610dfb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805191505080151561072057600080fd5b600191505b509392505050565b600160a060020a033316600090815260208190526040902054610e749034611065565b600160a060020a033316600090815260208190526040902055600154610e9a9034611065565b600155600160a060020a0333167f1b851e1031ef35a238e6c67d0c7991162390df915f70eaf9098dbf0b175a61983460405190815260200160405180910390a2600160a060020a03331660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3460405190815260200160405180910390a35b565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b600254600160a060020a03165b90565b600160a060020a0381161515610f6e57600080fd5b61084d8161107f565b5b50565b600082821115610f8757fe5b508082035b92915050565b600160a060020a0382161515610fa757600080fd5b600160a060020a038316600090815260208190526040902054610fca9082610f7b565b600160a060020a038085166000908152602081905260408082209390935590841681522054610ff99082611065565b600160a060020a03808416600081815260208190526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b505050565b6000813b908111905b50919050565b60008282018381101561107457fe5b8091505b5092915050565b60025460009081907f0542bbd0c672578966dcc525b30aa16723bb042675554ac5b0362f86b6e97dc590600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b151561112c57600080fd5b6102c65a03f1151561113d57600080fd5b50505060405180519050151561115257600080fd5b339250600160a060020a03841615156111a75782600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f1935050505015156111a257600080fd5b610b26565b83600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156111fe57600080fd5b6102c65a03f1151561120f57600080fd5b5050506040518051925050600160a060020a03841663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561127757600080fd5b6102c65a03f1151561128857600080fd5b505050604051805190501515610b2657600080fd5b5b5b5b50505050565b602060405190810160405260008152905600a165627a7a7230582080791d1f9dc3b49e0568657b190fb23268e5977ad0754e8763006599b244326f0029000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490
Deployed Bytecode
0x606060405236156100d55763ffffffff60e060020a60003504166306fdde0381146100da578063095ea7b31461016557806318160ddd1461019b57806323b872dd146101c05780632e1a7d4d146101fc578063313ce5671461021457806354fd4d501461023d57806357875631146102c857806370a08231146102ef57806395d89b4114610320578063a9059cbb146103ab578063be45fd62146103e1578063cae9ca511461045a578063d0e30db0146104d3578063dd62ed3e146104dd578063f5d60a5114610514578063fc772c8b14610543575b600080fd5b34156100e557600080fd5b6100ed610564565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017057600080fd5b610187600160a060020a036004351660243561060d565b604051901515815260200160405180910390f35b34156101a657600080fd5b6101ae6106b4565b60405190815260200160405180910390f35b34156101cb57600080fd5b610187600160a060020a03600435811690602435166044356106bb565b604051901515815260200160405180910390f35b341561020757600080fd5b61021260043561072d565b005b341561021f57600080fd5b610227610850565b60405160ff909116815260200160405180910390f35b341561024857600080fd5b6100ed61085a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d357600080fd5b610212600160a060020a0360043581169060243516610903565b005b34156102fa57600080fd5b6101ae600160a060020a0360043516610b2d565b60405190815260200160405180910390f35b341561032b57600080fd5b6100ed610b4c565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561012a5780820151818401525b602001610111565b50505050905090810190601f1680156101575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b657600080fd5b610187600160a060020a0360043516602435610bf5565b604051901515815260200160405180910390f35b34156103ec57600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c0c95505050505050565b604051901515815260200160405180910390f35b341561046557600080fd5b61018760048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d1495505050505050565b604051901515815260200160405180910390f35b610212610e51565b005b34156104e857600080fd5b6101ae600160a060020a0360043581169060243516610f1c565b60405190815260200160405180910390f35b341561051f57600080fd5b610527610f49565b604051600160a060020a03909116815260200160405180910390f35b341561054e57600080fd5b610212600160a060020a0360043516610f59565b005b61056c6112a6565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b600081158061063f5750600160a060020a03338116600090815260036020908152604080832093871683529290522054155b151561064a57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6001545b90565b600160a060020a038084166000908152600360209081526040808320339094168352929052908120546106ee8184610f7b565b600160a060020a0380871660009081526003602090815260408083203390941683529290522055610720858585610f92565b600191505b509392505050565b600160a060020a0333166000908152602081905260409020548190101561075357600080fd5b600160a060020a0333166000908152602081905260409020546107769082610f7b565b600160a060020a03331660009081526020819052604090205560015461079c9082610f7b565b600155600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156107d057600080fd5b33600160a060020a03167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e918260405190815260200160405180910390a2600033600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35b50565b60065460ff165b90565b6108626112a6565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6002546000907fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da90600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b15156109ae57600080fd5b6102c65a03f115156109bf57600080fd5b5050506040518051905015156109d457600080fd5b83600160a060020a0316639085b77f847fac42f8beb17975ed062dcb80c63e6d203ef1c2c335ced149dc5664cc671cb7da60010230600035600160e060020a03191660006040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b505050604051805190501515610aa357600080fd5b60028054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff198316179092551691507f7d475c32583df95fccc34a6e12df24c1fc9943092cc129b6512013aecba0f136338386604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a15b5b50505050565b600160a060020a0381166000908152602081905260409020545b919050565b610b546112a6565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106025780601f106105d757610100808354040283529160200191610602565b820191906000526020600020905b8154815290600101906020018083116105e557829003601f168201915b505050505090505b90565b6000610c02338484610f92565b5060015b92915050565b6000610c19338585610f92565b610c2284611056565b15610d095783600160a060020a031663a4c0ed363385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ca75780820151818401525b602001610c8e565b50505050905090810190601f168015610cd45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515610cf457600080fd5b6102c65a03f11515610d0557600080fd5b5050505b5060015b9392505050565b600080610d21858561060d565b1515610d2c57600080fd5b84600160a060020a0316638f4ffcb1338630876000604051602001526040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610dce5780820151818401525b602001610db5565b50505050905090810190601f168015610dfb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805191505080151561072057600080fd5b600191505b509392505050565b600160a060020a033316600090815260208190526040902054610e749034611065565b600160a060020a033316600090815260208190526040902055600154610e9a9034611065565b600155600160a060020a0333167f1b851e1031ef35a238e6c67d0c7991162390df915f70eaf9098dbf0b175a61983460405190815260200160405180910390a2600160a060020a03331660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef3460405190815260200160405180910390a35b565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b600254600160a060020a03165b90565b600160a060020a0381161515610f6e57600080fd5b61084d8161107f565b5b50565b600082821115610f8757fe5b508082035b92915050565b600160a060020a0382161515610fa757600080fd5b600160a060020a038316600090815260208190526040902054610fca9082610f7b565b600160a060020a038085166000908152602081905260408082209390935590841681522054610ff99082611065565b600160a060020a03808416600081815260208190526040908190209390935591908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b505050565b6000813b908111905b50919050565b60008282018381101561107457fe5b8091505b5092915050565b60025460009081907f0542bbd0c672578966dcc525b30aa16723bb042675554ac5b0362f86b6e97dc590600160a060020a0316639085b77f338330600160e060020a0319873516876040516020015260405160e060020a63ffffffff8716028152600160a060020a039485166004820152602481019390935292166044820152600160e060020a03199091166064820152608401602060405180830381600087803b151561112c57600080fd5b6102c65a03f1151561113d57600080fd5b50505060405180519050151561115257600080fd5b339250600160a060020a03841615156111a75782600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f1935050505015156111a257600080fd5b610b26565b83600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156111fe57600080fd5b6102c65a03f1151561120f57600080fd5b5050506040518051925050600160a060020a03841663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561127757600080fd5b6102c65a03f1151561128857600080fd5b505050604051805190501515610b2657600080fd5b5b5b5b50505050565b602060405190810160405260008152905600a165627a7a7230582080791d1f9dc3b49e0568657b190fb23268e5977ad0754e8763006599b244326f0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490
-----Decoded View---------------
Arg [0] : accessPolicy (address): 0xaE38c27E646959735ec70d77ED4eCc03A3EFf490
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ae38c27e646959735ec70d77ed4ecc03a3eff490
Swarm Source
bzzr://80791d1f9dc3b49e0568657b190fb23268e5977ad0754e8763006599b244326f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$7,978,548.56
Net Worth in ETH
3,419.235226
Token Allocations
ETH
100.00%
DECT
0.00%
HEX
0.00%
Multichain Portfolio | 33 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.