Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 7254475 | 2567 days ago | IN | 0 ETH | 0.00006341 | ||||
| Reject Mint | 7254458 | 2567 days ago | IN | 0 ETH | 0.00015671 | ||||
| Approve Mint | 7254454 | 2567 days ago | IN | 0 ETH | 0.00018712 | ||||
| Approve Mint | 7254451 | 2567 days ago | IN | 0 ETH | 0.00037455 | ||||
| Buy Tokens | 7254401 | 2567 days ago | IN | 0.00000001 ETH | 0.00047537 | ||||
| Buy Tokens | 7254400 | 2567 days ago | IN | 0.00000003 ETH | 0.00047537 | ||||
| Buy Tokens | 7254399 | 2567 days ago | IN | 0.00000007 ETH | 0.00055037 | ||||
| Set New Validato... | 7254337 | 2567 days ago | IN | 0 ETH | 0.00015251 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x709B6ef0...a64580f60 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
CompliantCrowdsale
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-02-01
*/
pragma solidity 0.4.24;
/**
* @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;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor(address _owner) public {
owner = _owner;
}
/**
* @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) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title Validator
* @dev The Validator contract has a validator address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Validator {
address public validator;
event NewValidatorSet(address indexed previousOwner, address indexed newValidator);
/**
* @dev The Validator constructor sets the original `validator` of the contract to the sender
* account.
*/
constructor() public {
validator = msg.sender;
}
/**
* @dev Throws if called by any account other than the validator.
*/
modifier onlyValidator() {
require(msg.sender == validator);
_;
}
/**
* @dev Allows the current validator to transfer control of the contract to a newValidator.
* @param newValidator The address to become next validator.
*/
function setNewValidator(address newValidator) public onlyValidator {
require(newValidator != address(0));
emit NewValidatorSet(validator, newValidator);
validator = newValidator;
}
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
function div(uint256 a, uint256 b) internal pure 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;
}
/**
* @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract TokenInterface {
function mint(address _to, uint256 _amount) public returns (bool);
function finishMinting() public returns (bool);
function transferOwnership(address newOwner) public;
}
/**
* @title Crowdsale
* @dev Crowdsale is a base contract for managing a token crowdsale.
* Crowdsales have a start and end timestamps, where investors can make
* token purchases and the crowdsale will assign them tokens based
* on a token per ETH rate. Funds collected are forwarded to a wallet
* as they arrive. The contract requires a MintableToken that will be
* minted as contributions arrive, note that the crowdsale contract
* must be owner of the token in order to be able to mint it.
*/
contract Crowdsale {
using SafeMath for uint256;
// The token being sold
address public token;
// start and end timestamps where investments are allowed (both inclusive)
uint256 public startTime;
uint256 public endTime;
// address where funds are collected
address public wallet;
// how many token units a buyer gets per ether
uint256 public rate;
// amount of raised money in wei
uint256 public weiRaised;
/**
* event for token purchase logging
* @param purchaser who paid for the tokens
* @param beneficiary who got the tokens
* @param value weis paid for purchase
* @param amount amount of tokens purchased
*/
event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);
constructor(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet, address _token) public {
require(_startTime >= now);
require(_endTime >= _startTime);
require(_rate > 0);
require(_wallet != address(0));
require(_token != address(0));
startTime = _startTime;
endTime = _endTime;
rate = _rate;
wallet = _wallet;
token = _token;
}
/** @dev fallback function redirects to buy tokens */
function () external payable {
buyTokens(msg.sender);
}
/** @dev buy tokens
* @param beneficiary the address to which the tokens have to be minted
*/
function buyTokens(address beneficiary) public payable {
require(beneficiary != address(0));
require(validPurchase());
uint256 weiAmount = msg.value;
// calculate token amount to be created
uint256 tokens = getTokenAmount(weiAmount);
// update state
weiRaised = weiRaised.add(weiAmount);
TokenInterface(token).mint(beneficiary, tokens);
emit TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
forwardFunds();
}
/** @return true if crowdsale event has ended */
function hasEnded() public view returns (bool) {
return now > endTime;
}
// Override this method to have a way to add business logic to your crowdsale when buying
function getTokenAmount(uint256 weiAmount) internal view returns(uint256) {
return weiAmount.mul(rate);
}
// send ether to the fund collection wallet
// override to create custom fund forwarding mechanisms
function forwardFunds() internal {
wallet.transfer(msg.value);
}
// @return true if the transaction can buy tokens
function validPurchase() internal view returns (bool) {
bool withinPeriod = now >= startTime && now <= endTime;
bool nonZeroPurchase = msg.value != 0;
return withinPeriod && nonZeroPurchase;
}
}
/**
* @title FinalizableCrowdsale
* @dev Extension of Crowdsale where an owner can do extra work
* after finishing.
*/
contract FinalizableCrowdsale is Crowdsale, Ownable {
using SafeMath for uint256;
bool public isFinalized = false;
event Finalized();
constructor(address _owner) public Ownable(_owner) {}
/**
* @dev Must be called after crowdsale ends, to do some extra finalization
* work. Calls the contract's finalization function.
*/
function finalize() onlyOwner public {
require(!isFinalized);
require(hasEnded());
finalization();
emit Finalized();
isFinalized = true;
}
/**
* @dev Can be overridden to add finalization logic. The overriding function
* should call super.finalization() to ensure the chain of finalization is
* executed entirely.
*/
function finalization() internal {}
}
contract Whitelist is Ownable {
mapping(address => bool) internal investorMap;
/**
* event for investor approval logging
* @param investor approved investor
*/
event Approved(address indexed investor);
/**
* event for investor disapproval logging
* @param investor disapproved investor
*/
event Disapproved(address indexed investor);
constructor(address _owner)
public
Ownable(_owner)
{
}
/** @param _investor the address of investor to be checked
* @return true if investor is approved
*/
function isInvestorApproved(address _investor) external view returns (bool) {
require(_investor != address(0));
return investorMap[_investor];
}
/** @dev approve an investor
* @param toApprove investor to be approved
*/
function approveInvestor(address toApprove) external onlyOwner {
investorMap[toApprove] = true;
emit Approved(toApprove);
}
/** @dev approve investors in bulk
* @param toApprove array of investors to be approved
*/
function approveInvestorsInBulk(address[] toApprove) external onlyOwner {
for (uint i = 0; i < toApprove.length; i++) {
investorMap[toApprove[i]] = true;
emit Approved(toApprove[i]);
}
}
/** @dev disapprove an investor
* @param toDisapprove investor to be disapproved
*/
function disapproveInvestor(address toDisapprove) external onlyOwner {
delete investorMap[toDisapprove];
emit Disapproved(toDisapprove);
}
/** @dev disapprove investors in bulk
* @param toDisapprove array of investors to be disapproved
*/
function disapproveInvestorsInBulk(address[] toDisapprove) external onlyOwner {
for (uint i = 0; i < toDisapprove.length; i++) {
delete investorMap[toDisapprove[i]];
emit Disapproved(toDisapprove[i]);
}
}
}
/** @title Compliant Crowdsale */
contract CompliantCrowdsale is Validator, FinalizableCrowdsale {
Whitelist public whiteListingContract;
struct MintStruct {
address to;
uint256 tokens;
uint256 weiAmount;
}
mapping (uint => MintStruct) public pendingMints;
uint256 public currentMintNonce;
mapping (address => uint) public rejectedMintBalance;
modifier checkIsInvestorApproved(address _account) {
require(whiteListingContract.isInvestorApproved(_account));
_;
}
modifier checkIsAddressValid(address _account) {
require(_account != address(0));
_;
}
/**
* event for rejected mint logging
* @param to address for which buy tokens got rejected
* @param value number of tokens
* @param amount number of ethers invested
* @param nonce request recorded at this particular nonce
* @param reason reason for rejection
*/
event MintRejected(
address indexed to,
uint256 value,
uint256 amount,
uint256 indexed nonce,
uint256 reason
);
/**
* event for buy tokens request logging
* @param beneficiary address for which buy tokens is requested
* @param tokens number of tokens
* @param weiAmount number of ethers invested
* @param nonce request recorded at this particular nonce
*/
event ContributionRegistered(
address beneficiary,
uint256 tokens,
uint256 weiAmount,
uint256 nonce
);
/**
* event for rate update logging
* @param rate new rate
*/
event RateUpdated(uint256 rate);
/**
* event for whitelist contract update logging
* @param _whiteListingContract address of the new whitelist contract
*/
event WhiteListingContractSet(address indexed _whiteListingContract);
/**
* event for claimed ether logging
* @param account user claiming the ether
* @param amount ether claimed
*/
event Claimed(address indexed account, uint256 amount);
/** @dev Constructor
* @param whitelistAddress Ethereum address of the whitelist contract
* @param _startTime crowdsale start time
* @param _endTime crowdsale end time
* @param _rate number of tokens to be sold per ether
* @param _wallet Ethereum address of the wallet
* @param _token Ethereum address of the token contract
* @param _owner Ethereum address of the owner
*/
constructor(
address whitelistAddress,
uint256 _startTime,
uint256 _endTime,
uint256 _rate,
address _wallet,
address _token,
address _owner
)
public
FinalizableCrowdsale(_owner)
Crowdsale(_startTime, _endTime, _rate, _wallet, _token)
{
setWhitelistContract(whitelistAddress);
}
/** @dev Updates whitelist contract address
* @param whitelistAddress address of the new whitelist contract
*/
function setWhitelistContract(address whitelistAddress)
public
onlyValidator
checkIsAddressValid(whitelistAddress)
{
whiteListingContract = Whitelist(whitelistAddress);
emit WhiteListingContractSet(whiteListingContract);
}
/** @dev buy tokens request
* @param beneficiary the address to which the tokens have to be minted
*/
function buyTokens(address beneficiary)
public
payable
checkIsInvestorApproved(beneficiary)
{
require(validPurchase());
uint256 weiAmount = msg.value;
// calculate token amount to be created
uint256 tokens = weiAmount.mul(rate);
pendingMints[currentMintNonce] = MintStruct(beneficiary, tokens, weiAmount);
emit ContributionRegistered(beneficiary, tokens, weiAmount, currentMintNonce);
currentMintNonce++;
}
/** @dev Updates token rate
* @param _rate New token rate
*/
function updateRate(uint256 _rate) public onlyOwner {
require(_rate > 0);
rate = _rate;
emit RateUpdated(rate);
}
/** @dev approve buy tokens request
* @param nonce request recorded at this particular nonce
*/
function approveMint(uint256 nonce)
external
onlyValidator
{
require(_approveMint(nonce));
}
/** @dev reject buy tokens request
* @param nonce request recorded at this particular nonce
* @param reason reason for rejection
*/
function rejectMint(uint256 nonce, uint256 reason)
external
onlyValidator
{
_rejectMint(nonce, reason);
}
/** @dev approve buy tokens requests in bulk
* @param nonces request recorded at these nonces
*/
function bulkApproveMints(uint256[] nonces)
external
onlyValidator
{
for (uint i = 0; i < nonces.length; i++) {
require(_approveMint(nonces[i]));
}
}
/** @dev reject buy tokens requests
* @param nonces request recorded at these nonces
* @param reasons reasons for rejection
*/
function bulkRejectMints(uint256[] nonces, uint256[] reasons)
external
onlyValidator
{
require(nonces.length == reasons.length);
for (uint i = 0; i < nonces.length; i++) {
_rejectMint(nonces[i], reasons[i]);
}
}
/** @dev approve buy tokens request called internally in the approveMint and bulkApproveMints functions
* @param nonce request recorded at this particular nonce
*/
function _approveMint(uint256 nonce)
private
checkIsInvestorApproved(pendingMints[nonce].to)
returns (bool)
{
// update state
weiRaised = weiRaised.add(pendingMints[nonce].weiAmount);
//No need to use mint-approval on token side, since the minting is already approved in the crowdsale side
TokenInterface(token).mint(pendingMints[nonce].to, pendingMints[nonce].tokens);
emit TokenPurchase(
msg.sender,
pendingMints[nonce].to,
pendingMints[nonce].weiAmount,
pendingMints[nonce].tokens
);
forwardFunds(pendingMints[nonce].weiAmount);
delete pendingMints[nonce];
return true;
}
/** @dev reject buy tokens request called internally in the rejectMint and bulkRejectMints functions
* @param nonce request recorded at this particular nonce
* @param reason reason for rejection
*/
function _rejectMint(uint256 nonce, uint256 reason)
private
checkIsAddressValid(pendingMints[nonce].to)
{
rejectedMintBalance[pendingMints[nonce].to] = rejectedMintBalance[pendingMints[nonce].to].add(pendingMints[nonce].weiAmount);
emit MintRejected(
pendingMints[nonce].to,
pendingMints[nonce].tokens,
pendingMints[nonce].weiAmount,
nonce,
reason
);
delete pendingMints[nonce];
}
/** @dev claim back ether if buy tokens request is rejected */
function claim() external {
require(rejectedMintBalance[msg.sender] > 0);
uint256 value = rejectedMintBalance[msg.sender];
rejectedMintBalance[msg.sender] = 0;
msg.sender.transfer(value);
emit Claimed(msg.sender, value);
}
function finalization() internal {
TokenInterface(token).finishMinting();
transferTokenOwnership(owner);
super.finalization();
}
/** @dev Updates token contract address
* @param newToken New token contract address
*/
function setTokenContract(address newToken)
external
onlyOwner
checkIsAddressValid(newToken)
{
token = newToken;
}
/** @dev transfers ownership of the token contract
* @param newOwner New owner of the token contract
*/
function transferTokenOwnership(address newOwner)
public
onlyOwner
checkIsAddressValid(newOwner)
{
TokenInterface(token).transferOwnership(newOwner);
}
function forwardFunds(uint256 amount) internal {
wallet.transfer(amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"whitelistAddress","type":"address"}],"name":"setWhitelistContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newValidator","type":"address"}],"name":"setNewValidator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nonces","type":"uint256[]"},{"name":"reasons","type":"uint256[]"}],"name":"bulkRejectMints","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonces","type":"uint256[]"}],"name":"bulkApproveMints","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pendingMints","outputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"},{"name":"weiAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"updateRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentMintNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"}],"name":"approveMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"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":"whiteListingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newToken","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rejectedMintBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"reason","type":"uint256"}],"name":"rejectMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"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":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"whitelistAddress","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_token","type":"address"},{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":false,"name":"reason","type":"uint256"}],"name":"MintRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"ContributionRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"RateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_whiteListingContract","type":"address"}],"name":"WhiteListingContractSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newValidator","type":"address"}],"name":"NewValidatorSet","type":"event"}]Contract Creation Code
0x60806040526007805460a060020a60ff021916905534801561002057600080fd5b5060405160e0806112be83398101604090815281516020830151918301516060840151608085015160a086015160c09096015160008054600160a060020a031916331790559395929391929091808087878787874285101561008157600080fd5b8484101561008e57600080fd5b6000831161009b57600080fd5b600160a060020a03821615156100b057600080fd5b600160a060020a03811615156100c557600080fd5b60029490945560039290925560055560048054600160a060020a0319908116600160a060020a0393841617909155600180548216938316939093179092556007805490921692169190911790555061012587640100000000610131810204565b505050505050506101af565b600054600160a060020a0316331461014857600080fd5b80600160a060020a038116151561015e57600080fd5b60088054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b611100806101be6000396000f30060806040526004361061015e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312f2614081146101695780631456979f1461018a5780631d7c194e146101ab57806321e6b53d146101d75780632c4e722e146101f85780633197cbb61461021f5780633a5381b5146102345780633b59cb24146102655780634042b66f146102855780634bb278f31461029a5780634e71d92d146102af578063521eb273146102c457806363900ca6146102d957806369ea17711461031957806378e979251461033157806379b2614d146103465780638aa6e6de1461035b5780638d4e4083146103735780638da5cb5b1461039c578063b0e1f553146103b1578063bbcd5bbe146103c6578063c1e47662146103e7578063cf4186cb14610408578063ec8ac4d814610423578063ecb70fb714610437578063f2fde38b1461044c578063fc0c546a1461046d575b61016733610482565b005b34801561017557600080fd5b50610167600160a060020a0360043516610609565b34801561019657600080fd5b50610167600160a060020a0360043516610687565b3480156101b757600080fd5b50610167602460048035828101929082013591813591820191013561070e565b3480156101e357600080fd5b50610167600160a060020a036004351661077d565b34801561020457600080fd5b5061020d61082d565b60408051918252519081900360200190f35b34801561022b57600080fd5b5061020d610833565b34801561024057600080fd5b50610249610839565b60408051600160a060020a039092168252519081900360200190f35b34801561027157600080fd5b506101676004803560248101910135610848565b34801561029157600080fd5b5061020d61089f565b3480156102a657600080fd5b506101676108a5565b3480156102bb57600080fd5b5061016761095f565b3480156102d057600080fd5b506102496109f6565b3480156102e557600080fd5b506102f1600435610a05565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561032557600080fd5b50610167600435610a30565b34801561033d57600080fd5b5061020d610a8f565b34801561035257600080fd5b5061020d610a95565b34801561036757600080fd5b50610167600435610a9b565b34801561037f57600080fd5b50610388610ac9565b604080519115158252519081900360200190f35b3480156103a857600080fd5b50610249610aea565b3480156103bd57600080fd5b50610249610af9565b3480156103d257600080fd5b50610167600160a060020a0360043516610b08565b3480156103f357600080fd5b5061020d600160a060020a0360043516610b58565b34801561041457600080fd5b50610167600435602435610b6a565b610167600160a060020a0360043516610482565b34801561044357600080fd5b50610388610b8f565b34801561045857600080fd5b50610167600160a060020a0360043516610b97565b34801561047957600080fd5b50610249610c1f565b600854604080517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291516000938493869391169163a59af3409160248082019260209290919082900301818887803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051151561052657600080fd5b61052e610c2e565b151561053957600080fd5b60055434935061055090849063ffffffff610c5e16565b6040805160608181018352600160a060020a0380891680845260208085018781528587018b8152600a8054600090815260098552899020975188549616600160a060020a03199096169590951787559051600187015551600290950194909455905484519182529281018590528084018890529081019190915290519193507febd5a5df4567e1ac2664b9104c4482e110c7b0392ba6afca036e8462f7d89cd3919081900360800190a15050600a805460010190555050565b600054600160a060020a0316331461062057600080fd5b80600160a060020a038116151561063657600080fd5b60088054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b600054600160a060020a0316331461069e57600080fd5b600160a060020a03811615156106b357600080fd5b60008054604051600160a060020a03808516939216917fb845aa14512b0a33bc681ec85e8670ad87301081c1a11343e30d5851ca5d206b91a360008054600160a060020a031916600160a060020a0392909216919091179055565b60008054600160a060020a0316331461072657600080fd5b83821461073257600080fd5b5060005b838110156107765761076e85858381811061074d57fe5b90506020020135848484818110151561076257fe5b90506020020135610c94565b600101610736565b5050505050565b600754600160a060020a0316331461079457600080fd5b80600160a060020a03811615156107aa57600080fd5b600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561081157600080fd5b505af1158015610825573d6000803e3d6000fd5b505050505050565b60055481565b60035481565b600054600160a060020a031681565b60008054600160a060020a0316331461086057600080fd5b5060005b8181101561089a5761088783838381811061087b57fe5b90506020020135610da3565b151561089257600080fd5b600101610864565b505050565b60065481565b600754600160a060020a031633146108bc57600080fd5b60075474010000000000000000000000000000000000000000900460ff16156108e457600080fd5b6108ec610b8f565b15156108f757600080fd5b6108ff610fd8565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16007805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b336000908152600b6020526040812054811061097a57600080fd5b50336000818152600b6020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156109bc573d6000803e3d6000fd5b5060408051828152905133917fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a919081900360200190a250565b600454600160a060020a031681565b600960205260009081526040902080546001820154600290920154600160a060020a03909116919083565b600754600160a060020a03163314610a4757600080fd5b60008111610a5457600080fd5b60058190556040805182815290517fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9181900360200190a150565b60025481565b600a5481565b600054600160a060020a03163314610ab257600080fd5b610abb81610da3565b1515610ac657600080fd5b50565b60075474010000000000000000000000000000000000000000900460ff1681565b600754600160a060020a031681565b600854600160a060020a031681565b600754600160a060020a03163314610b1f57600080fd5b80600160a060020a0381161515610b3557600080fd5b5060018054600160a060020a031916600160a060020a0392909216919091179055565b600b6020526000908152604090205481565b600054600160a060020a03163314610b8157600080fd5b610b8b8282610c94565b5050565b600354421190565b600754600160a060020a03163314610bae57600080fd5b600160a060020a0381161515610bc357600080fd5b600754604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a031681565b60008060006002544210158015610c4757506003544211155b915050341515818015610c575750805b9250505090565b600080831515610c715760009150610c8d565b50828202828482811515610c8157fe5b0414610c8957fe5b8091505b5092915050565b600082815260096020526040902054600160a060020a0316801515610cb857600080fd5b600083815260096020908152604080832060028101549054600160a060020a03168452600b90925290912054610cf39163ffffffff61108b16565b60008481526009602081815260408084208054600160a060020a039081168652600b84528286209690965593889052918152825460018401546002909401548351948552918401919091528282018690529051869391909116917f416bf61e626db4475cb9910facca78486402afc994ecc9138c7605dc688fae1a919081900360600190a3505060009081526009602052604081208054600160a060020a03191681556001810182905560020155565b60008181526009602090815260408083205460085482517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820181905293519394919092169263a59af34092602480820193929182900301818887803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b505050506040513d6020811015610e4557600080fd5b50511515610e5257600080fd5b600083815260096020526040902060020154600654610e769163ffffffff61108b16565b600655600180546000858152600960209081526040808320805495015481517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0396871660048201526024810191909152905194909316936340c10f1993604480820194918390030190829087803b158015610efa57600080fd5b505af1158015610f0e573d6000803e3d6000fd5b505050506040513d6020811015610f2457600080fd5b5050600083815260096020908152604091829020805460028201546001909201548451928352928201929092528251600160a060020a039092169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad189281900390910190a3600083815260096020526040902060020154610fa69061109a565b505060009081526009602052604081208054600160a060020a0319168155600180820183905560029091019190915590565b600160009054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505060075461108590600160a060020a031661077d565b6110895b565b600082820183811015610c8957fe5b600454604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610b8b573d6000803e3d6000fd00a165627a7a723058208390d555af0feab2fb6b313ac9f21f360589edbb1f7e72d39058358a1571ffb30029000000000000000000000000e849977f05b004fb920cb1e4a64a47e7bcb4aee9000000000000000000000000000000000000000000000000000000005c7054c00000000000000000000000000000000000000000000000000000000062547dbc0000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000c6e9a57495429e070b56f743deb82ee2d135cc3e000000000000000000000000ed16d449dfc45cc96777ae983387a32509e45c45000000000000000000000000c6e9a57495429e070b56f743deb82ee2d135cc3e
Deployed Bytecode
0x60806040526004361061015e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312f2614081146101695780631456979f1461018a5780631d7c194e146101ab57806321e6b53d146101d75780632c4e722e146101f85780633197cbb61461021f5780633a5381b5146102345780633b59cb24146102655780634042b66f146102855780634bb278f31461029a5780634e71d92d146102af578063521eb273146102c457806363900ca6146102d957806369ea17711461031957806378e979251461033157806379b2614d146103465780638aa6e6de1461035b5780638d4e4083146103735780638da5cb5b1461039c578063b0e1f553146103b1578063bbcd5bbe146103c6578063c1e47662146103e7578063cf4186cb14610408578063ec8ac4d814610423578063ecb70fb714610437578063f2fde38b1461044c578063fc0c546a1461046d575b61016733610482565b005b34801561017557600080fd5b50610167600160a060020a0360043516610609565b34801561019657600080fd5b50610167600160a060020a0360043516610687565b3480156101b757600080fd5b50610167602460048035828101929082013591813591820191013561070e565b3480156101e357600080fd5b50610167600160a060020a036004351661077d565b34801561020457600080fd5b5061020d61082d565b60408051918252519081900360200190f35b34801561022b57600080fd5b5061020d610833565b34801561024057600080fd5b50610249610839565b60408051600160a060020a039092168252519081900360200190f35b34801561027157600080fd5b506101676004803560248101910135610848565b34801561029157600080fd5b5061020d61089f565b3480156102a657600080fd5b506101676108a5565b3480156102bb57600080fd5b5061016761095f565b3480156102d057600080fd5b506102496109f6565b3480156102e557600080fd5b506102f1600435610a05565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561032557600080fd5b50610167600435610a30565b34801561033d57600080fd5b5061020d610a8f565b34801561035257600080fd5b5061020d610a95565b34801561036757600080fd5b50610167600435610a9b565b34801561037f57600080fd5b50610388610ac9565b604080519115158252519081900360200190f35b3480156103a857600080fd5b50610249610aea565b3480156103bd57600080fd5b50610249610af9565b3480156103d257600080fd5b50610167600160a060020a0360043516610b08565b3480156103f357600080fd5b5061020d600160a060020a0360043516610b58565b34801561041457600080fd5b50610167600435602435610b6a565b610167600160a060020a0360043516610482565b34801561044357600080fd5b50610388610b8f565b34801561045857600080fd5b50610167600160a060020a0360043516610b97565b34801561047957600080fd5b50610249610c1f565b600854604080517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291516000938493869391169163a59af3409160248082019260209290919082900301818887803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b505050506040513d602081101561051957600080fd5b5051151561052657600080fd5b61052e610c2e565b151561053957600080fd5b60055434935061055090849063ffffffff610c5e16565b6040805160608181018352600160a060020a0380891680845260208085018781528587018b8152600a8054600090815260098552899020975188549616600160a060020a03199096169590951787559051600187015551600290950194909455905484519182529281018590528084018890529081019190915290519193507febd5a5df4567e1ac2664b9104c4482e110c7b0392ba6afca036e8462f7d89cd3919081900360800190a15050600a805460010190555050565b600054600160a060020a0316331461062057600080fd5b80600160a060020a038116151561063657600080fd5b60088054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b600054600160a060020a0316331461069e57600080fd5b600160a060020a03811615156106b357600080fd5b60008054604051600160a060020a03808516939216917fb845aa14512b0a33bc681ec85e8670ad87301081c1a11343e30d5851ca5d206b91a360008054600160a060020a031916600160a060020a0392909216919091179055565b60008054600160a060020a0316331461072657600080fd5b83821461073257600080fd5b5060005b838110156107765761076e85858381811061074d57fe5b90506020020135848484818110151561076257fe5b90506020020135610c94565b600101610736565b5050505050565b600754600160a060020a0316331461079457600080fd5b80600160a060020a03811615156107aa57600080fd5b600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561081157600080fd5b505af1158015610825573d6000803e3d6000fd5b505050505050565b60055481565b60035481565b600054600160a060020a031681565b60008054600160a060020a0316331461086057600080fd5b5060005b8181101561089a5761088783838381811061087b57fe5b90506020020135610da3565b151561089257600080fd5b600101610864565b505050565b60065481565b600754600160a060020a031633146108bc57600080fd5b60075474010000000000000000000000000000000000000000900460ff16156108e457600080fd5b6108ec610b8f565b15156108f757600080fd5b6108ff610fd8565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16007805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b336000908152600b6020526040812054811061097a57600080fd5b50336000818152600b6020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156109bc573d6000803e3d6000fd5b5060408051828152905133917fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a919081900360200190a250565b600454600160a060020a031681565b600960205260009081526040902080546001820154600290920154600160a060020a03909116919083565b600754600160a060020a03163314610a4757600080fd5b60008111610a5457600080fd5b60058190556040805182815290517fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9181900360200190a150565b60025481565b600a5481565b600054600160a060020a03163314610ab257600080fd5b610abb81610da3565b1515610ac657600080fd5b50565b60075474010000000000000000000000000000000000000000900460ff1681565b600754600160a060020a031681565b600854600160a060020a031681565b600754600160a060020a03163314610b1f57600080fd5b80600160a060020a0381161515610b3557600080fd5b5060018054600160a060020a031916600160a060020a0392909216919091179055565b600b6020526000908152604090205481565b600054600160a060020a03163314610b8157600080fd5b610b8b8282610c94565b5050565b600354421190565b600754600160a060020a03163314610bae57600080fd5b600160a060020a0381161515610bc357600080fd5b600754604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360078054600160a060020a031916600160a060020a0392909216919091179055565b600154600160a060020a031681565b60008060006002544210158015610c4757506003544211155b915050341515818015610c575750805b9250505090565b600080831515610c715760009150610c8d565b50828202828482811515610c8157fe5b0414610c8957fe5b8091505b5092915050565b600082815260096020526040902054600160a060020a0316801515610cb857600080fd5b600083815260096020908152604080832060028101549054600160a060020a03168452600b90925290912054610cf39163ffffffff61108b16565b60008481526009602081815260408084208054600160a060020a039081168652600b84528286209690965593889052918152825460018401546002909401548351948552918401919091528282018690529051869391909116917f416bf61e626db4475cb9910facca78486402afc994ecc9138c7605dc688fae1a919081900360600190a3505060009081526009602052604081208054600160a060020a03191681556001810182905560020155565b60008181526009602090815260408083205460085482517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820181905293519394919092169263a59af34092602480820193929182900301818887803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b505050506040513d6020811015610e4557600080fd5b50511515610e5257600080fd5b600083815260096020526040902060020154600654610e769163ffffffff61108b16565b600655600180546000858152600960209081526040808320805495015481517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0396871660048201526024810191909152905194909316936340c10f1993604480820194918390030190829087803b158015610efa57600080fd5b505af1158015610f0e573d6000803e3d6000fd5b505050506040513d6020811015610f2457600080fd5b5050600083815260096020908152604091829020805460028201546001909201548451928352928201929092528251600160a060020a039092169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad189281900390910190a3600083815260096020526040902060020154610fa69061109a565b505060009081526009602052604081208054600160a060020a0319168155600180820183905560029091019190915590565b600160009054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505060075461108590600160a060020a031661077d565b6110895b565b600082820183811015610c8957fe5b600454604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610b8b573d6000803e3d6000fd00a165627a7a723058208390d555af0feab2fb6b313ac9f21f360589edbb1f7e72d39058358a1571ffb30029
Swarm Source
bzzr://8390d555af0feab2fb6b313ac9f21f360589edbb1f7e72d39058358a1571ffb3
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.