Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VEN
Compiler Version
v0.4.11+commit.68ef5810
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-08-07
*/
pragma solidity ^0.4.11;
contract Owned {
address public owner;
function Owned() {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function setOwner(address _newOwner) onlyOwner {
owner = _newOwner;
}
}
/**
* @title Prealloc
* @dev Pre-alloc storage vars, to flatten gas usage in future operations.
*/
library Prealloc {
struct UINT256 {
uint256 value_;
}
function set(UINT256 storage i, uint256 value) internal {
i.value_ = ~value;
}
function get(UINT256 storage i) internal constant returns (uint256) {
return ~i.value_;
}
}
/**
* @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;
}
}
// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20
contract Token {
/* This is a slight change to the ERC20 base standard.
function totalSupply() constant returns (uint256 supply);
is replaced with:
uint256 public totalSupply;
This automatically creates a getter function for the totalSupply.
This is moved to the base contract since public getter functions are not
currently recognised as an implementation of the matching abstract
function by the compiler.
*/
/// total amount of tokens
uint256 public totalSupply;
/// @param _owner The address from which the balance will be retrieved
/// @return The balance
function balanceOf(address _owner) constant returns (uint256 balance);
/// @notice send `_value` token to `_to` from `msg.sender`
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transfer(address _to, uint256 _value) returns (bool success);
/// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
/// @param _from The address of the sender
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
/// @notice `msg.sender` approves `_addr` to spend `_value` tokens
/// @param _spender The address of the account able to transfer the tokens
/// @param _value The amount of wei to be approved for transfer
/// @return Whether the approval was successful or not
function approve(address _spender, uint256 _value) returns (bool success);
/// @param _owner The address of the account owning tokens
/// @param _spender The address of the account able to transfer the tokens
/// @return Amount of remaining tokens allowed to spent
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);
}
/// VEN token, ERC20 compliant
contract VEN is Token, Owned {
using SafeMath for uint256;
string public constant name = "VeChain Token"; //The Token's name
uint8 public constant decimals = 18; //Number of decimals of the smallest unit
string public constant symbol = "VEN"; //An identifier
struct Account {
uint256 balance;
// raw token can be transformed into balance with bonus
uint256 rawTokens;
}
// Balances for each account
mapping(address => Account) accounts;
// Owner of account approves the transfer of an amount to another account
mapping(address => mapping(address => uint256)) allowed;
// every buying will update this var.
// pre-alloc to make first buying cost no much more gas than subsequent
using Prealloc for Prealloc.UINT256;
Prealloc.UINT256 rawTokensSupplied;
// bonus that can be shared by raw tokens
uint256 bonusOffered;
// Constructor
function VEN() {
rawTokensSupplied.set(0);
}
// Send back ether sent to me
function () {
revert();
}
// If sealed, transfer is enabled and mint is disabled
function isSealed() constant returns (bool) {
return owner == 0;
}
// Claim bonus by raw tokens
function claimBonus(address _owner) internal{
require(isSealed());
if (accounts[_owner].rawTokens != 0) {
accounts[_owner].balance = balanceOf(_owner);
accounts[_owner].rawTokens = 0;
}
}
// What is the balance of a particular account?
function balanceOf(address _owner) constant returns (uint256 balance) {
if (accounts[_owner].rawTokens == 0)
return accounts[_owner].balance;
if (isSealed()) {
uint256 bonus =
accounts[_owner].rawTokens
.mul(bonusOffered)
.div(rawTokensSupplied.get());
return accounts[_owner].balance
.add(accounts[_owner].rawTokens)
.add(bonus);
}
return accounts[_owner].balance.add(accounts[_owner].rawTokens);
}
// Transfer the balance from owner's account to another account
function transfer(address _to, uint256 _amount) returns (bool success) {
require(isSealed());
// implicitly claim bonus for both sender and receiver
claimBonus(msg.sender);
claimBonus(_to);
if (accounts[msg.sender].balance >= _amount
&& _amount > 0
&& accounts[_to].balance + _amount > accounts[_to].balance) {
accounts[msg.sender].balance -= _amount;
accounts[_to].balance += _amount;
Transfer(msg.sender, _to, _amount);
return true;
} else {
return false;
}
}
// Send _value amount of tokens from address _from to address _to
// The transferFrom method is used for a withdraw workflow, allowing contracts to send
// tokens on your behalf, for example to "deposit" to a contract address and/or to charge
// fees in sub-currencies; the command should fail unless the _from account has
// deliberately authorized the sender of the message via some mechanism; we propose
// these standardized APIs for approval:
function transferFrom(
address _from,
address _to,
uint256 _amount
) returns (bool success) {
require(isSealed());
// implicitly claim bonus for both sender and receiver
claimBonus(_from);
claimBonus(_to);
if (accounts[_from].balance >= _amount
&& allowed[_from][msg.sender] >= _amount
&& _amount > 0
&& accounts[_to].balance + _amount > accounts[_to].balance) {
accounts[_from].balance -= _amount;
allowed[_from][msg.sender] -= _amount;
accounts[_to].balance += _amount;
Transfer(_from, _to, _amount);
return true;
} else {
return false;
}
}
// Allow _spender to withdraw from your account, multiple times, up to the _value amount.
// If this function is called again it overwrites the current allowance with _value.
function approve(address _spender, uint256 _amount) returns (bool success) {
allowed[msg.sender][_spender] = _amount;
Approval(msg.sender, _spender, _amount);
return true;
}
/* Approves and then calls the receiving contract */
function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
//call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
//receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
//it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead.
//if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { revert(); }
ApprovalReceiver(_spender).receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
// Mint tokens and assign to some one
function mint(address _owner, uint256 _amount, bool _isRaw) onlyOwner{
if (_isRaw) {
accounts[_owner].rawTokens = accounts[_owner].rawTokens.add(_amount);
rawTokensSupplied.set(rawTokensSupplied.get().add(_amount));
} else {
accounts[_owner].balance = accounts[_owner].balance.add(_amount);
}
totalSupply = totalSupply.add(_amount);
Transfer(0, _owner, _amount);
}
// Offer bonus to raw tokens holder
function offerBonus(uint256 _bonus) onlyOwner {
bonusOffered = bonusOffered.add(_bonus);
}
// Set owner to zero address, to disable mint, and enable token transfer
function seal() onlyOwner {
setOwner(0);
totalSupply = totalSupply.add(bonusOffered);
Transfer(0, address(-1), bonusOffered);
}
}
contract ApprovalReceiver {
function receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData);
}
// Contract to sell and distribute VEN tokens
contract VENSale is Owned{
/// chart of stage transition
///
/// deploy initialize startTime endTime finalize
/// | <-earlyStageLasts-> | | <- closedStageLasts -> |
/// O-----------O---------------O---------------------O-------------O------------------------O------------>
/// Created Initialized Early Normal Closed Finalized
enum Stage {
NotCreated,
Created,
Initialized,
Early,
Normal,
Closed,
Finalized
}
using SafeMath for uint256;
uint256 public constant totalSupply = (10 ** 9) * (10 ** 18); // 1 billion VEN, decimals set to 18
uint256 constant privateSupply = totalSupply * 9 / 100; // 9% for private ICO
uint256 constant commercialPlan = totalSupply * 23 / 100; // 23% for commercial plan
uint256 constant reservedForTeam = totalSupply * 5 / 100; // 5% for team
uint256 constant reservedForOperations = totalSupply * 22 / 100; // 22 for operations
// 59%
uint256 public constant nonPublicSupply = privateSupply + commercialPlan + reservedForTeam + reservedForOperations;
// 41%
uint256 public constant publicSupply = totalSupply - nonPublicSupply;
uint256 public officialLimit;
uint256 public channelsLimit;
using Prealloc for Prealloc.UINT256;
Prealloc.UINT256 officialSold_; // amount of tokens officially sold out
uint256 public channelsSold; // amount of tokens sold out via channels
uint256 constant venPerEth = 3500; // normal exchange rate
uint256 constant venPerEthEarlyStage = venPerEth + venPerEth * 15 / 100; // early stage has 15% reward
VEN ven; // VEN token contract follows ERC20 standard
address ethVault; // the account to keep received ether
address venVault; // the account to keep non-public offered VEN tokens
uint public startTime; // time to start sale
uint public endTime; // tiem to close sale
uint public earlyStageLasts; // early bird stage lasts in seconds
bool initialized;
bool finalized;
function VENSale() {
officialSold_.set(0);
}
/// @notice calculte exchange rate according to current stage
/// @return exchange rate. zero if not in sale.
function exchangeRate() constant returns (uint256){
if (stage() == Stage.Early) {
return venPerEthEarlyStage;
}
if (stage() == Stage.Normal) {
return venPerEth;
}
return 0;
}
/// @notice for test purpose
function blockTime() constant returns (uint) {
return block.timestamp;
}
/// @notice estimate stage
/// @return current stage
function stage() constant returns (Stage) {
if (finalized) {
return Stage.Finalized;
}
if (!initialized) {
// deployed but not initialized
return Stage.Created;
}
if (blockTime() < startTime) {
// not started yet
return Stage.Initialized;
}
if (officialSold_.get().add(channelsSold) >= publicSupply) {
// all sold out
return Stage.Closed;
}
if (blockTime() < endTime) {
// in sale
if (blockTime() < startTime.add(earlyStageLasts)) {
// early bird stage
return Stage.Early;
}
// normal stage
return Stage.Normal;
}
// closed
return Stage.Closed;
}
/// @notice entry to buy tokens
function () payable {
buy();
}
/// @notice entry to buy tokens
function buy() payable {
require(msg.value >= 0.01 ether);
uint256 rate = exchangeRate();
// here don't need to check stage. rate is only valid when in sale
require(rate > 0);
uint256 remained = officialLimit.sub(officialSold_.get());
uint256 requested = msg.value.mul(rate);
if (requested > remained) {
//exceed remained
requested = remained;
}
uint256 ethCost = requested.div(rate);
if (requested > 0) {
ven.mint(msg.sender, requested, true);
// transfer ETH to vault
ethVault.transfer(ethCost);
officialSold_.set(officialSold_.get().add(requested));
onSold(msg.sender, requested, ethCost);
}
uint256 toReturn = msg.value.sub(ethCost);
if(toReturn > 0) {
// return over payed ETH
msg.sender.transfer(toReturn);
}
}
/// @notice calculate tokens sold officially
function officialSold() constant returns (uint256) {
return officialSold_.get();
}
/// @notice manually offer tokens to channels
function offerToChannels(uint256 _venAmount) onlyOwner {
Stage stg = stage();
// since the settlement may be delayed, so it's allowed in closed stage
require(stg == Stage.Early || stg == Stage.Normal || stg == Stage.Closed);
channelsSold = channelsSold.add(_venAmount);
//should not exceed limit
require(channelsSold <= channelsLimit);
ven.mint(
venVault,
_venAmount,
true // unsold tokens can be claimed by channels portion
);
onSold(venVault, _venAmount, 0);
}
/// @notice initialize to prepare for sale
/// @param _ven The address VEN token contract following ERC20 standard
/// @param _ethVault The place to store received ETH
/// @param _venVault The place to store non-publicly supplied VEN tokens
/// @param _channelsLimit The hard limit for channels sale
/// @param _startTime The time when sale starts
/// @param _endTime The time when sale ends
/// @param _earlyStageLasts duration of early stage
function initialize(
VEN _ven,
address _ethVault,
address _venVault,
uint256 _channelsLimit,
uint _startTime,
uint _endTime,
uint _earlyStageLasts) onlyOwner {
require(stage() == Stage.Created);
// ownership of token contract should already be this
require(_ven.owner() == address(this));
require(address(_ethVault) != 0);
require(address(_venVault) != 0);
require(_startTime > blockTime());
require(_startTime.add(_earlyStageLasts) < _endTime);
ven = _ven;
ethVault = _ethVault;
venVault = _venVault;
channelsLimit = _channelsLimit;
officialLimit = publicSupply.sub(_channelsLimit);
startTime = _startTime;
endTime = _endTime;
earlyStageLasts = _earlyStageLasts;
ven.mint(
venVault,
reservedForTeam.add(reservedForOperations),
false // team and operations reserved portion can't share unsold tokens
);
ven.mint(
venVault,
privateSupply.add(commercialPlan),
true // private ICO and commercial plan can share unsold tokens
);
initialized = true;
onInitialized();
}
/// @notice finalize
function finalize() onlyOwner {
// only after closed stage
require(stage() == Stage.Closed);
uint256 unsold = publicSupply.sub(officialSold_.get()).sub(channelsSold);
if (unsold > 0) {
// unsold VEN as bonus
ven.offerBonus(unsold);
}
ven.seal();
finalized = true;
onFinalized();
}
event onInitialized();
event onFinalized();
event onSold(address indexed buyer, uint256 venAmount, uint256 ethCost);
}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":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","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":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"seal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_bonus","type":"uint256"}],"name":"offerBonus","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isSealed","outputs":[{"name":"","type":"bool"}],"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":"owner","outputs":[{"name":"","type":"address"}],"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":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_isRaw","type":"bool"}],"name":"mint","outputs":[],"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"},{"payable":false,"type":"fallback"},{"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
6060604052341561000c57fe5b5b5b60018054600160a060020a03191633600160a060020a03161790555b61004360046000640100000000610d6c61004982021704565b5b610052565b801982555b5050565b610dc1806100616000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f9578063095ea7b31461018957806313af4035146101bc57806318160ddd146101da57806323b872dd146101fc578063313ce567146102355780633fb27b851461025b578063534eb1d41461026d578063631f98521461028257806370a08231146102a65780638da5cb5b146102d457806395d89b4114610300578063a9059cbb14610390578063cae9ca51146103c3578063d1a1beb41461043a578063dd62ed3e14610460575b34156100eb57fe5b6100f75b60006000fd5b565b005b341561010157fe5b610109610494565b60408051602080825283518183015283519192839290830191850190808383821561014f575b80518252602083111561014f57601f19909201916020918201910161012f565b505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019157fe5b6101a8600160a060020a03600435166024356104cb565b604080519115158252519081900360200190f35b34156101c457fe5b6100f7600160a060020a0360043516610536565b005b34156101e257fe5b6101ea61057f565b60408051918252519081900360200190f35b341561020457fe5b6101a8600160a060020a0360043581169060243516604435610585565b604080519115158252519081900360200190f35b341561023d57fe5b6102456106b5565b6040805160ff9092168252519081900360200190f35b341561026357fe5b6100f76106ba565b005b341561027557fe5b6100f760043561072c565b005b341561028a57fe5b6101a8610763565b604080519115158252519081900360200190f35b34156102ae57fe5b6101ea600160a060020a0360043516610774565b60408051918252519081900360200190f35b34156102dc57fe5b6102e461088e565b60408051600160a060020a039092168252519081900360200190f35b341561030857fe5b61010961089d565b60408051602080825283518183015283519192839290830191850190808383821561014f575b80518252602083111561014f57601f19909201916020918201910161012f565b505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039857fe5b6101a8600160a060020a03600435166024356108d4565b604080519115158252519081900360200190f35b34156103cb57fe5b604080516020600460443581810135601f81018490048402850184019095528484526101a8948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506109bb95505050505050565b604080519115158252519081900360200190f35b341561044257fe5b6100f7600160a060020a03600435166024356044351515610b42565b005b341561046857fe5b6101ea600160a060020a0360043581169060243516610c6c565b60408051918252519081900360200190f35b60408051808201909152600d81527f5665436861696e20546f6b656e00000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60015433600160a060020a039081169116146105525760006000fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005481565b600061058f610763565b151561059b5760006000fd5b6105a484610c99565b6105ad83610c99565b600160a060020a0384166000908152600260205260409020548290108015906105fd5750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b80156106095750600082115b801561062e5750600160a060020a038316600090815260026020526040902054828101115b156106a957600160a060020a0380851660008181526002602081815260408084208054899003905560038252808420338716855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020610d7683398151915292908290030190a35060016106ad565b5060005b5b9392505050565b601281565b60015433600160a060020a039081169116146106d65760006000fd5b6106e06000610536565b6005546000546106f59163ffffffff610cfd16565b60009081556005546040805191825251600160a060020a039291600080516020610d76833981519152919081900360200190a35b5b565b60015433600160a060020a039081169116146107485760006000fd5b60055461075b908263ffffffff610cfd16565b6005555b5b50565b600154600160a060020a0316155b90565b600160a060020a038116600090815260026020526040812060010154819015156107b857600160a060020a0383166000908152600260205260409020549150610888565b6107c0610763565b156108575761080c6107d26004610d17565b600554600160a060020a0386166000908152600260205260409020600101546108009163ffffffff610d2016565b9063ffffffff610d4f16565b600160a060020a038416600090815260026020526040902060018101549054919250610850918391610844919063ffffffff610cfd16565b9063ffffffff610cfd16565b9150610888565b600160a060020a0383166000908152600260205260409020600181015490546108859163ffffffff610cfd16565b91505b50919050565b600154600160a060020a031681565b60408051808201909152600381527f56454e0000000000000000000000000000000000000000000000000000000000602082015281565b60006108de610763565b15156108ea5760006000fd5b6108f333610c99565b6108fc83610c99565b600160a060020a0333166000908152600260205260409020548290108015906109255750600082115b801561094a5750600160a060020a038316600090815260026020526040902054828101115b156109ac57600160a060020a0333811660008181526002602090815260408083208054889003905593871680835291849020805487019055835186815293519193600080516020610d76833981519152929081900390910190a3506001610530565b506000610530565b5b92915050565b600160a060020a03338116600081815260036020908152604080832094881680845294825280832087905580518781529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a383600160a060020a0316638f4ffcb1338530866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360008314610adb575b805182526020831115610adb57601f199092019160209182019101610abb565b505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610b2557fe5b6102c65a03f11515610b3357fe5b505050600190505b9392505050565b60015433600160a060020a03908116911614610b5e5760006000fd5b8015610bdc57600160a060020a038316600090815260026020526040902060010154610b90908363ffffffff610cfd16565b600160a060020a038416600090815260026020526040902060010155610bd7610bc9836108446004610d17565b9063ffffffff610cfd16565b60049063ffffffff610d6c16565b610c1f565b600160a060020a038316600090815260026020526040902054610c05908363ffffffff610cfd16565b600160a060020a0384166000908152600260205260409020555b600054610c32908363ffffffff610cfd16565b6000908155604080518481529051600160a060020a0386169291600080516020610d76833981519152919081900360200190a35b5b505050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b610ca1610763565b1515610cad5760006000fd5b600160a060020a0381166000908152600260205260409020600101541561057b57610cd781610774565b600160a060020a03821660009081526002602052604081209182556001909101555b5b50565b600082820183811015610d0c57fe5b8091505b5092915050565b8054195b919050565b6000828202831580610d3c5750828482811515610d3957fe5b04145b1515610d0c57fe5b8091505b5092915050565b600060008284811515610d5e57fe5b0490508091505b5092915050565b801982555b50505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582025b056fd26f4d32c925e02b86f9e46f76cf66650f7b88d6d8cd684ddf9dee6920029
Deployed Bytecode
0x606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f9578063095ea7b31461018957806313af4035146101bc57806318160ddd146101da57806323b872dd146101fc578063313ce567146102355780633fb27b851461025b578063534eb1d41461026d578063631f98521461028257806370a08231146102a65780638da5cb5b146102d457806395d89b4114610300578063a9059cbb14610390578063cae9ca51146103c3578063d1a1beb41461043a578063dd62ed3e14610460575b34156100eb57fe5b6100f75b60006000fd5b565b005b341561010157fe5b610109610494565b60408051602080825283518183015283519192839290830191850190808383821561014f575b80518252602083111561014f57601f19909201916020918201910161012f565b505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019157fe5b6101a8600160a060020a03600435166024356104cb565b604080519115158252519081900360200190f35b34156101c457fe5b6100f7600160a060020a0360043516610536565b005b34156101e257fe5b6101ea61057f565b60408051918252519081900360200190f35b341561020457fe5b6101a8600160a060020a0360043581169060243516604435610585565b604080519115158252519081900360200190f35b341561023d57fe5b6102456106b5565b6040805160ff9092168252519081900360200190f35b341561026357fe5b6100f76106ba565b005b341561027557fe5b6100f760043561072c565b005b341561028a57fe5b6101a8610763565b604080519115158252519081900360200190f35b34156102ae57fe5b6101ea600160a060020a0360043516610774565b60408051918252519081900360200190f35b34156102dc57fe5b6102e461088e565b60408051600160a060020a039092168252519081900360200190f35b341561030857fe5b61010961089d565b60408051602080825283518183015283519192839290830191850190808383821561014f575b80518252602083111561014f57601f19909201916020918201910161012f565b505050905090810190601f16801561017b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561039857fe5b6101a8600160a060020a03600435166024356108d4565b604080519115158252519081900360200190f35b34156103cb57fe5b604080516020600460443581810135601f81018490048402850184019095528484526101a8948235600160a060020a03169460248035956064949293919092019181908401838280828437509496506109bb95505050505050565b604080519115158252519081900360200190f35b341561044257fe5b6100f7600160a060020a03600435166024356044351515610b42565b005b341561046857fe5b6101ea600160a060020a0360043581169060243516610c6c565b60408051918252519081900360200190f35b60408051808201909152600d81527f5665436861696e20546f6b656e00000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60015433600160a060020a039081169116146105525760006000fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005481565b600061058f610763565b151561059b5760006000fd5b6105a484610c99565b6105ad83610c99565b600160a060020a0384166000908152600260205260409020548290108015906105fd5750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b80156106095750600082115b801561062e5750600160a060020a038316600090815260026020526040902054828101115b156106a957600160a060020a0380851660008181526002602081815260408084208054899003905560038252808420338716855282528084208054899003905594881680845291815291849020805487019055835186815293519093600080516020610d7683398151915292908290030190a35060016106ad565b5060005b5b9392505050565b601281565b60015433600160a060020a039081169116146106d65760006000fd5b6106e06000610536565b6005546000546106f59163ffffffff610cfd16565b60009081556005546040805191825251600160a060020a039291600080516020610d76833981519152919081900360200190a35b5b565b60015433600160a060020a039081169116146107485760006000fd5b60055461075b908263ffffffff610cfd16565b6005555b5b50565b600154600160a060020a0316155b90565b600160a060020a038116600090815260026020526040812060010154819015156107b857600160a060020a0383166000908152600260205260409020549150610888565b6107c0610763565b156108575761080c6107d26004610d17565b600554600160a060020a0386166000908152600260205260409020600101546108009163ffffffff610d2016565b9063ffffffff610d4f16565b600160a060020a038416600090815260026020526040902060018101549054919250610850918391610844919063ffffffff610cfd16565b9063ffffffff610cfd16565b9150610888565b600160a060020a0383166000908152600260205260409020600181015490546108859163ffffffff610cfd16565b91505b50919050565b600154600160a060020a031681565b60408051808201909152600381527f56454e0000000000000000000000000000000000000000000000000000000000602082015281565b60006108de610763565b15156108ea5760006000fd5b6108f333610c99565b6108fc83610c99565b600160a060020a0333166000908152600260205260409020548290108015906109255750600082115b801561094a5750600160a060020a038316600090815260026020526040902054828101115b156109ac57600160a060020a0333811660008181526002602090815260408083208054889003905593871680835291849020805487019055835186815293519193600080516020610d76833981519152929081900390910190a3506001610530565b506000610530565b5b92915050565b600160a060020a03338116600081815260036020908152604080832094881680845294825280832087905580518781529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a383600160a060020a0316638f4ffcb1338530866040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360008314610adb575b805182526020831115610adb57601f199092019160209182019101610abb565b505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610b2557fe5b6102c65a03f11515610b3357fe5b505050600190505b9392505050565b60015433600160a060020a03908116911614610b5e5760006000fd5b8015610bdc57600160a060020a038316600090815260026020526040902060010154610b90908363ffffffff610cfd16565b600160a060020a038416600090815260026020526040902060010155610bd7610bc9836108446004610d17565b9063ffffffff610cfd16565b60049063ffffffff610d6c16565b610c1f565b600160a060020a038316600090815260026020526040902054610c05908363ffffffff610cfd16565b600160a060020a0384166000908152600260205260409020555b600054610c32908363ffffffff610cfd16565b6000908155604080518481529051600160a060020a0386169291600080516020610d76833981519152919081900360200190a35b5b505050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b610ca1610763565b1515610cad5760006000fd5b600160a060020a0381166000908152600260205260409020600101541561057b57610cd781610774565b600160a060020a03821660009081526002602052604081209182556001909101555b5b50565b600082820183811015610d0c57fe5b8091505b5092915050565b8054195b919050565b6000828202831580610d3c5750828482811515610d3957fe5b04145b1515610d0c57fe5b8091505b5092915050565b600060008284811515610d5e57fe5b0490508091505b5092915050565b801982555b50505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582025b056fd26f4d32c925e02b86f9e46f76cf66650f7b88d6d8cd684ddf9dee6920029
Swarm Source
bzzr://25b056fd26f4d32c925e02b86f9e46f76cf66650f7b88d6d8cd684ddf9dee692
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.