Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 529 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Edit Contributor... | 7802568 | 2476 days ago | IN | 0 ETH | 0.00066561 | ||||
| Edit Contributor... | 7155727 | 2586 days ago | IN | 0 ETH | 0.006808 | ||||
| Edit Contributor... | 7155716 | 2586 days ago | IN | 0 ETH | 0.0068 | ||||
| Edit Contributor... | 7108146 | 2595 days ago | IN | 0 ETH | 0.00118185 | ||||
| Edit Contributor... | 6903054 | 2631 days ago | IN | 0 ETH | 0.00116497 | ||||
| Edit Contributor... | 6697437 | 2665 days ago | IN | 0 ETH | 0.0003344 | ||||
| Edit Contributor... | 6451914 | 2705 days ago | IN | 0 ETH | 0.00069418 | ||||
| Edit Contributor... | 6432916 | 2708 days ago | IN | 0 ETH | 0.00333018 | ||||
| Edit Contributor... | 6227991 | 2742 days ago | IN | 0 ETH | 0.00133574 | ||||
| Edit Contributor... | 6180610 | 2750 days ago | IN | 0 ETH | 0.00049227 | ||||
| Transfer | 6161225 | 2753 days ago | IN | 0.001 ETH | 0.000861 | ||||
| Edit Contributor... | 6153298 | 2755 days ago | IN | 0 ETH | 0.00168524 | ||||
| Edit Contributor... | 6145036 | 2756 days ago | IN | 0 ETH | 0.00302337 | ||||
| Edit Contributor... | 6105338 | 2763 days ago | IN | 0 ETH | 0.04034062 | ||||
| Finalize | 6104712 | 2763 days ago | IN | 0 ETH | 0.00149485 | ||||
| Airdrop For | 6080401 | 2767 days ago | IN | 0 ETH | 0.00040781 | ||||
| Airdrop For | 6080368 | 2767 days ago | IN | 0 ETH | 0.00044025 | ||||
| Edit Contributor... | 6075265 | 2768 days ago | IN | 0 ETH | 0.00031528 | ||||
| Edit Contributor... | 6074834 | 2768 days ago | IN | 0 ETH | 0.0006941 | ||||
| Edit Contributor... | 6063394 | 2770 days ago | IN | 0 ETH | 0.00066632 | ||||
| Edit Contributor... | 6063371 | 2770 days ago | IN | 0 ETH | 0.00396834 | ||||
| Edit Contributor... | 6063338 | 2770 days ago | IN | 0 ETH | 0.00396593 | ||||
| Edit Contributor... | 6063311 | 2770 days ago | IN | 0 ETH | 0.00396493 | ||||
| Edit Contributor... | 6063280 | 2770 days ago | IN | 0 ETH | 0.00396545 | ||||
| Edit Contributor... | 6063222 | 2770 days ago | IN | 0 ETH | 0.00396635 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 6016395 | 2778 days ago | 3 ETH | ||||
| Transfer | 6016391 | 2778 days ago | 20 ETH | ||||
| Transfer | 6016370 | 2778 days ago | 2.99 ETH | ||||
| Transfer | 6016357 | 2778 days ago | 0.294 ETH | ||||
| Transfer | 6016355 | 2778 days ago | 10.41487789 ETH | ||||
| Transfer | 6016348 | 2778 days ago | 50 ETH | ||||
| Transfer | 6016345 | 2778 days ago | 1 ETH | ||||
| Transfer | 6016341 | 2778 days ago | 50 ETH | ||||
| Transfer | 6016334 | 2778 days ago | 0.010115 ETH | ||||
| Transfer | 6016325 | 2778 days ago | 3 ETH | ||||
| Transfer | 6016312 | 2778 days ago | 5 ETH | ||||
| Transfer | 6016311 | 2778 days ago | 10 ETH | ||||
| Transfer | 6016307 | 2778 days ago | 0.02 ETH | ||||
| Transfer | 6016307 | 2778 days ago | 11 ETH | ||||
| Transfer | 6016298 | 2778 days ago | 5.015 ETH | ||||
| Transfer | 6016289 | 2778 days ago | 1.2437 ETH | ||||
| Transfer | 6016271 | 2778 days ago | 0.6 ETH | ||||
| Transfer | 6016254 | 2778 days ago | 5.04 ETH | ||||
| Transfer | 6016239 | 2778 days ago | 0.9937 ETH | ||||
| Transfer | 6016238 | 2778 days ago | 1 ETH | ||||
| Transfer | 6016225 | 2778 days ago | 0.35 ETH | ||||
| Transfer | 6016211 | 2778 days ago | 1.5 ETH | ||||
| Transfer | 6016204 | 2778 days ago | 0.03 ETH | ||||
| Transfer | 6016180 | 2778 days ago | 1 ETH | ||||
| Transfer | 6016140 | 2778 days ago | 0.05 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DipTge
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 2018-06-22
*/
pragma solidity 0.4.24;
// File: contracts/tokensale/DipTgeInterface.sol
contract DipTgeInterface {
function tokenIsLocked(address _contributor) public constant returns (bool);
}
// File: zeppelin-solidity/contracts/ownership/Ownable.sol
/**
* @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.
*/
function Ownable() {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) onlyOwner public {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
// File: zeppelin-solidity/contracts/math/SafeMath.sol
/**
* @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;
}
}
// File: zeppelin-solidity/contracts/token/ERC20Basic.sol
/**
* @title ERC20Basic
* @dev Simpler version of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/179
*/
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) public constant returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
// File: zeppelin-solidity/contracts/token/BasicToken.sol
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
*/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public constant returns (uint256 balance) {
return balances[_owner];
}
}
// File: zeppelin-solidity/contracts/token/ERC20.sol
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public constant returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: zeppelin-solidity/contracts/token/StandardToken.sol
/**
* @title Standard ERC20 token
*
* @dev Implementation of the basic 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 ERC20, BasicToken {
mapping (address => mapping (address => uint256)) allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
uint256 _allowance = allowed[_from][msg.sender];
// Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
// require (_value <= _allowance);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
/**
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
*/
function increaseApproval (address _spender, uint _addedValue)
returns (bool success) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
function decreaseApproval (address _spender, uint _subtractedValue)
returns (bool success) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
// File: zeppelin-solidity/contracts/token/MintableToken.sol
/**
* @title Mintable token
* @dev Simple ERC20 Token example, with mintable token creation
* @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
* Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
*/
contract MintableToken is StandardToken, Ownable {
event Mint(address indexed to, uint256 amount);
event MintFinished();
bool public mintingFinished = false;
modifier canMint() {
require(!mintingFinished);
_;
}
/**
* @dev Function to mint tokens
* @param _to The address that will receive the minted tokens.
* @param _amount The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
totalSupply = totalSupply.add(_amount);
balances[_to] = balances[_to].add(_amount);
Mint(_to, _amount);
Transfer(0x0, _to, _amount);
return true;
}
/**
* @dev Function to stop minting new tokens.
* @return True if the operation was successful.
*/
function finishMinting() onlyOwner public returns (bool) {
mintingFinished = true;
MintFinished();
return true;
}
}
// File: zeppelin-solidity/contracts/lifecycle/Pausable.sol
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
Unpause();
}
}
// File: zeppelin-solidity/contracts/token/PausableToken.sol
/**
* @title Pausable token
*
* @dev StandardToken modified with pausable transfers.
**/
contract PausableToken is StandardToken, Pausable {
function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
return super.transfer(_to, _value);
}
function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
return super.transferFrom(_from, _to, _value);
}
function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
return super.approve(_spender, _value);
}
function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
return super.increaseApproval(_spender, _addedValue);
}
function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) {
return super.decreaseApproval(_spender, _subtractedValue);
}
}
// File: contracts/token/DipToken.sol
/**
* @title DIP Token
* @dev The Decentralized Insurance Platform Token.
* @author Christoph Mussenbrock
* @copyright 2017 Etherisc GmbH
*/
pragma solidity 0.4.24;
contract DipToken is PausableToken, MintableToken {
string public constant name = "Decentralized Insurance Protocol";
string public constant symbol = "DIP";
uint256 public constant decimals = 18;
uint256 public constant MAXIMUM_SUPPLY = 10**9 * 10**18; // 1 Billion 1'000'000'000
DipTgeInterface public DipTokensale;
constructor() public {
DipTokensale = DipTgeInterface(owner);
}
modifier shouldNotBeLockedIn(address _contributor) {
// after LockIntTime2, we don't need to check anymore, and
// the DipTokensale contract is no longer required.
require(DipTokensale.tokenIsLocked(_contributor) == false);
_;
}
/**
* @dev Function to mint tokens
* @param _to The address that will recieve the minted tokens.
* @param _amount The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(address _to, uint256 _amount) public returns (bool) {
if (totalSupply.add(_amount) > MAXIMUM_SUPPLY) {
return false;
}
return super.mint(_to, _amount);
}
/**
* Owner can transfer back tokens which have been sent to this contract by mistake.
* @param _token address of token contract of the respective tokens
* @param _to where to send the tokens
*/
function salvageTokens(ERC20Basic _token, address _to) onlyOwner public {
_token.transfer(_to, _token.balanceOf(this));
}
function transferFrom(address _from, address _to, uint256 _value) shouldNotBeLockedIn(_from) public returns (bool) {
return super.transferFrom(_from, _to, _value);
}
function transfer(address to, uint256 value) shouldNotBeLockedIn(msg.sender) public returns (bool) {
return super.transfer(to, value);
}
}
// File: zeppelin-solidity/contracts/crowdsale/Crowdsale.sol
/**
* @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.
*/
contract Crowdsale {
using SafeMath for uint256;
// The token being sold
MintableToken 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 wei
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);
function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) {
require(_startTime >= now);
require(_endTime >= _startTime);
require(_rate > 0);
require(_wallet != 0x0);
token = createTokenContract();
startTime = _startTime;
endTime = _endTime;
rate = _rate;
wallet = _wallet;
}
// creates the token to be sold.
// override this method to have crowdsale of a specific mintable token.
function createTokenContract() internal returns (MintableToken) {
return new MintableToken();
}
// fallback function can be used to buy tokens
function () payable {
buyTokens(msg.sender);
}
// low level token purchase function
function buyTokens(address beneficiary) public payable {
require(beneficiary != 0x0);
require(validPurchase());
uint256 weiAmount = msg.value;
// calculate token amount to be created
uint256 tokens = weiAmount.mul(rate);
// update state
weiRaised = weiRaised.add(weiAmount);
token.mint(beneficiary, tokens);
TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
forwardFunds();
}
// 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 constant returns (bool) {
bool withinPeriod = now >= startTime && now <= endTime;
bool nonZeroPurchase = msg.value != 0;
return withinPeriod && nonZeroPurchase;
}
// @return true if crowdsale event has ended
function hasEnded() public constant returns (bool) {
return now > endTime;
}
}
// File: contracts/tokensale/DipWhitelistedCrowdsale.sol
/**
* @title DIP Token Generating Event
* @dev The Decentralized Insurance Platform Token.
* @author Christoph Mussenbrock
* @copyright 2017 Etherisc GmbH
*/
pragma solidity 0.4.24;
contract DipWhitelistedCrowdsale is Ownable {
using SafeMath for uint256;
struct ContributorData {
uint256 allowance;
uint256 contributionAmount;
uint256 tokensIssued;
bool airdrop;
uint256 bonus; // 0 == 0%, 4 == 25%, 10 == 10%
uint256 lockupPeriod; // 0, 1 or 2 (years)
}
mapping (address => ContributorData) public contributorList;
event Whitelisted(address indexed _contributor, uint256 _allowance, bool _airdrop, uint256 _bonus, uint256 _lockupPeriod);
/**
* Push contributor data to the contract before the crowdsale
*/
function editContributors (
address[] _contributorAddresses,
uint256[] _contributorAllowance,
bool[] _airdrop,
uint256[] _bonus,
uint256[] _lockupPeriod
) onlyOwner public {
// Check if input data is consistent
require(
_contributorAddresses.length == _contributorAllowance.length &&
_contributorAddresses.length == _airdrop.length &&
_contributorAddresses.length == _bonus.length &&
_contributorAddresses.length == _lockupPeriod.length
);
for (uint256 cnt = 0; cnt < _contributorAddresses.length; cnt = cnt.add(1)) {
require(_bonus[cnt] == 0 || _bonus[cnt] == 4 || _bonus[cnt] == 10);
require(_lockupPeriod[cnt] <= 2);
address contributor = _contributorAddresses[cnt];
contributorList[contributor].allowance = _contributorAllowance[cnt];
contributorList[contributor].airdrop = _airdrop[cnt];
contributorList[contributor].bonus = _bonus[cnt];
contributorList[contributor].lockupPeriod = _lockupPeriod[cnt];
emit Whitelisted(
_contributorAddresses[cnt],
_contributorAllowance[cnt],
_airdrop[cnt],
_bonus[cnt],
_lockupPeriod[cnt]
);
}
}
}
// File: zeppelin-solidity/contracts/crowdsale/FinalizableCrowdsale.sol
/**
* @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();
/**
* @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();
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 {
}
}
// File: contracts/tokensale/DipTge.sol
/**
* @title DIP Token Generating Event
* @notice The Decentralized Insurance Platform Token.
* @author Christoph Mussenbrock
*
* @copyright 2017 Etherisc GmbH
*/
pragma solidity 0.4.24;
contract DipTge is DipWhitelistedCrowdsale, FinalizableCrowdsale {
using SafeMath for uint256;
enum state { pendingStart, priorityPass, crowdsale, crowdsaleEnded }
uint256 public startOpenPpTime;
uint256 public hardCap;
uint256 public lockInTime1; // token lock-in period for team, ECA, US accredited investors
uint256 public lockInTime2; // token lock-in period for founders
state public crowdsaleState = state.pendingStart;
event DipTgeStarted(uint256 _time);
event CrowdsaleStarted(uint256 _time);
event HardCapReached(uint256 _time);
event DipTgeEnded(uint256 _time);
event TokenAllocated(address _beneficiary, uint256 _amount);
constructor(
uint256 _startTime,
uint256 _startOpenPpTime,
uint256 _endTime,
uint256 _lockInTime1,
uint256 _lockInTime2,
uint256 _hardCap,
uint256 _rate,
address _wallet
)
Crowdsale(_startTime, _endTime, _rate, _wallet)
public
{
// Check arguments
require(_startTime >= block.timestamp);
require(_startOpenPpTime >= _startTime);
require(_endTime >= _startOpenPpTime);
require(_lockInTime1 >= _endTime);
require(_lockInTime2 > _lockInTime1);
require(_hardCap > 0);
require(_rate > 0);
require(_wallet != 0x0);
// Set contract fields
startOpenPpTime = _startOpenPpTime;
hardCap = _hardCap;
lockInTime1 = _lockInTime1;
lockInTime2 = _lockInTime2;
DipToken(token).pause();
}
function setRate(uint256 _rate) onlyOwner public {
require(crowdsaleState == state.pendingStart);
rate = _rate;
}
function unpauseToken() onlyOwner external {
DipToken(token).unpause();
}
/**
* Calculate the maximum remaining contribution allowed for an address
* @param _contributor the address of the contributor
* @return maxContribution maximum allowed amount in wei
*/
function calculateMaxContribution(address _contributor) public constant returns (uint256 _maxContribution) {
uint256 maxContrib = 0;
if (crowdsaleState == state.priorityPass) {
maxContrib = contributorList[_contributor].allowance.sub(contributorList[_contributor].contributionAmount);
if (maxContrib > hardCap.sub(weiRaised)) {
maxContrib = hardCap.sub(weiRaised);
}
} else if (crowdsaleState == state.crowdsale) {
if (contributorList[_contributor].allowance > 0) {
maxContrib = hardCap.sub(weiRaised);
}
}
return maxContrib;
}
/**
* Calculate amount of tokens
* This is used twice:
* 1) For calculation of token amount plus optional bonus from wei amount contributed
* In this case, rate is the defined exchange rate of ETH against DIP.
* 2) For calculation of token amount plus optional bonus from DIP token amount
* In the second case, rate == 1 because we have already calculated DIP tokens from RSC amount
* by applying a factor of 10/32.
* @param _contributor the address of the contributor
* @param _amount contribution amount
* @return _tokens amount of tokens
*/
function calculateTokens(address _contributor, uint256 _amount, uint256 _rate) public constant returns (uint256 _tokens) {
uint256 bonus = contributorList[_contributor].bonus;
assert(bonus == 0 || bonus == 4 || bonus == 10);
if (bonus > 0) {
_tokens = _amount.add(_amount.div(bonus)).mul(_rate);
} else {
_tokens = _amount.mul(_rate);
}
}
/**
* Set the current state of the crowdsale.
*/
function setCrowdsaleState() public {
if (weiRaised >= hardCap && crowdsaleState != state.crowdsaleEnded) {
crowdsaleState = state.crowdsaleEnded;
emit HardCapReached(block.timestamp);
emit DipTgeEnded(block.timestamp);
} else if (
block.timestamp >= startTime &&
block.timestamp < startOpenPpTime &&
crowdsaleState != state.priorityPass
) {
crowdsaleState = state.priorityPass;
emit DipTgeStarted(block.timestamp);
} else if (
block.timestamp >= startOpenPpTime &&
block.timestamp <= endTime &&
crowdsaleState != state.crowdsale
) {
crowdsaleState = state.crowdsale;
emit CrowdsaleStarted(block.timestamp);
} else if (
crowdsaleState != state.crowdsaleEnded &&
block.timestamp > endTime
) {
crowdsaleState = state.crowdsaleEnded;
emit DipTgeEnded(block.timestamp);
}
}
/**
* The token buying function.
* @param _beneficiary receiver of tokens.
*/
function buyTokens(address _beneficiary) public payable {
require(_beneficiary != 0x0);
require(validPurchase());
require(contributorList[_beneficiary].airdrop == false);
setCrowdsaleState();
uint256 weiAmount = msg.value;
uint256 maxContrib = calculateMaxContribution(_beneficiary);
uint256 refund;
if (weiAmount > maxContrib) {
refund = weiAmount.sub(maxContrib);
weiAmount = maxContrib;
}
// stop here if transaction does not yield tokens
require(weiAmount > 0);
// calculate token amount to be created
uint256 tokens = calculateTokens(_beneficiary, weiAmount, rate);
assert(tokens > 0);
// update state
weiRaised = weiRaised.add(weiAmount);
require(token.mint(_beneficiary, tokens));
emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);
contributorList[_beneficiary].contributionAmount = contributorList[_beneficiary].contributionAmount.add(weiAmount);
contributorList[_beneficiary].tokensIssued = contributorList[_beneficiary].tokensIssued.add(tokens);
wallet.transfer(weiAmount);
if (refund != 0) _beneficiary.transfer(refund);
}
/**
* Check if token is locked.
*/
function tokenIsLocked(address _contributor) public constant returns (bool) {
if (block.timestamp < lockInTime1 && contributorList[_contributor].lockupPeriod == 1) {
return true;
} else if (block.timestamp < lockInTime2 && contributorList[_contributor].lockupPeriod == 2) {
return true;
}
return false;
}
/**
* Distribute tokens to selected team members & founders.
* Unit of Allowance is ETH and is converted in number of tokens by multiplying with Rate.
* This can be called by any whitelisted beneficiary.
*/
function airdrop() public {
airdropFor(msg.sender);
}
/**
* Alternatively to airdrop(); tokens can be directly sent to beneficiaries by this function
* This can be called only once.
*/
function airdropFor(address _beneficiary) public {
require(_beneficiary != 0x0);
require(contributorList[_beneficiary].airdrop == true);
require(contributorList[_beneficiary].tokensIssued == 0);
require(contributorList[_beneficiary].allowance > 0);
setCrowdsaleState();
require(crowdsaleState == state.crowdsaleEnded);
uint256 amount = contributorList[_beneficiary].allowance.mul(rate);
require(token.mint(_beneficiary, amount));
emit TokenAllocated(_beneficiary, amount);
contributorList[_beneficiary].tokensIssued = contributorList[_beneficiary].tokensIssued.add(amount);
}
/**
* Creates an new ERC20 Token contract for the DIP Token.
* Overrides Crowdsale function
* @return the created token
*/
function createTokenContract() internal returns (MintableToken) {
return new DipToken();
}
/**
* Finalize sale and perform cleanup actions.
*/
function finalization() internal {
uint256 maxSupply = DipToken(token).MAXIMUM_SUPPLY();
token.mint(wallet, maxSupply.sub(token.totalSupply())); // Alternativly, hardcode remaining token distribution.
token.finishMinting();
token.transferOwnership(owner);
}
/**
* Owner can transfer back tokens which have been sent to this contract by mistake.
* @param _token address of token contract of the respective tokens
* @param _to where to send the tokens
*/
function salvageTokens(ERC20Basic _token, address _to) onlyOwner external {
_token.transfer(_to, _token.balanceOf(this));
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"_contributor","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"calculateTokens","outputs":[{"name":"_tokens","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_contributor","type":"address"}],"name":"tokenIsLocked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":"_beneficiary","type":"address"}],"name":"airdropFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpauseToken","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":"_contributor","type":"address"}],"name":"calculateMaxContribution","outputs":[{"name":"_maxContribution","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"","type":"address"}],"name":"contributorList","outputs":[{"name":"allowance","type":"uint256"},{"name":"contributionAmount","type":"uint256"},{"name":"tokensIssued","type":"uint256"},{"name":"airdrop","type":"bool"},{"name":"bonus","type":"uint256"},{"name":"lockupPeriod","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockInTime2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setCrowdsaleState","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contributorAddresses","type":"address[]"},{"name":"_contributorAllowance","type":"uint256[]"},{"name":"_airdrop","type":"bool[]"},{"name":"_bonus","type":"uint256[]"},{"name":"_lockupPeriod","type":"uint256[]"}],"name":"editContributors","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"}],"name":"salvageTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startOpenPpTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockInTime1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_startOpenPpTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_lockInTime1","type":"uint256"},{"name":"_lockInTime2","type":"uint256"},{"name":"_hardCap","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_time","type":"uint256"}],"name":"DipTgeStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_time","type":"uint256"}],"name":"CrowdsaleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_time","type":"uint256"}],"name":"HardCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_time","type":"uint256"}],"name":"DipTgeEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"TokenAllocated","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_contributor","type":"address"},{"indexed":false,"name":"_allowance","type":"uint256"},{"indexed":false,"name":"_airdrop","type":"bool"},{"indexed":false,"name":"_bonus","type":"uint256"},{"indexed":false,"name":"_lockupPeriod","type":"uint256"}],"name":"Whitelisted","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"}]Contract Creation Code
60806040526008805460ff19908116909155600d805490911690553480156200002757600080fd5b506040516101008062002bb683398101604090815281516020830151918301516060840151608085015160a086015160c087015160e090970151949693949293919290919087868383428410156200007e57600080fd5b838310156200008c57600080fd5b600082116200009a57600080fd5b600160a060020a0381161515620000b057600080fd5b620000c36401000000006200021a810204565b60008054600160a060020a03928316600160a060020a03199182161790915560019590955560029390935560049190915560038054919092169083161790556006805490911633179055428810156200011b57600080fd5b878710156200012957600080fd5b868610156200013757600080fd5b858510156200014557600080fd5b8484116200015257600080fd5b600083116200016057600080fd5b600082116200016e57600080fd5b600160a060020a03811615156200018457600080fd5b6009879055600a839055600b859055600c84905560008054604080517f8456cb590000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692638456cb599260048084019382900301818387803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505050505050506200025a565b60006200022662000249565b604051809103906000f08015801562000243573d6000803e3d6000fd5b50905090565b6040516110c68062001af083390190565b611886806200026a6000396000f3006080604052600436106101505763ffffffff60e060020a6000350416631adda83a811461015b5780632c4e722e146101945780633197cbb6146101a957806334fcf437146101be5780633884d635146101d65780633e03c84f146101eb5780634042b66f146102205780634bb278f3146102355780634faf94201461024a57806350669a031461026b578063521eb273146102805780635f2536f7146102b157806378e97925146102d25780638d4e4083146102e75780638da5cb5b146102fc57806392acb4d6146103115780639ff1b56f14610365578063b5cb06111461037a578063b70949c91461038f578063bb957493146104c8578063d3087ff5146104ef578063e7bb523314610504578063ebf652cc1461053d578063ec8ac4d814610552578063ecb70fb714610566578063f2fde38b1461057b578063fb86a4041461059c578063fc0c546a146105b1575b610159336105c6565b005b34801561016757600080fd5b50610182600160a060020a0360043516602435604435610875565b60408051918252519081900360200190f35b3480156101a057600080fd5b5061018261090c565b3480156101b557600080fd5b50610182610912565b3480156101ca57600080fd5b50610159600435610918565b3480156101e257600080fd5b50610159610951565b3480156101f757600080fd5b5061020c600160a060020a036004351661095c565b604080519115158252519081900360200190f35b34801561022c57600080fd5b506101826109d9565b34801561024157600080fd5b506101596109df565b34801561025657600080fd5b50610159600160a060020a0360043516610a59565b34801561027757600080fd5b50610159610c73565b34801561028c57600080fd5b50610295610cfe565b60408051600160a060020a039092168252519081900360200190f35b3480156102bd57600080fd5b50610182600160a060020a0360043516610d0d565b3480156102de57600080fd5b50610182610dea565b3480156102f357600080fd5b5061020c610df0565b34801561030857600080fd5b50610295610df9565b34801561031d57600080fd5b50610332600160a060020a0360043516610e08565b604080519687526020870195909552858501939093529015156060850152608084015260a0830152519081900360c00190f35b34801561037157600080fd5b50610182610e41565b34801561038657600080fd5b50610159610e47565b34801561039b57600080fd5b506040805160206004803580820135838102808601850190965280855261015995369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061104b9650505050505050565b3480156104d457600080fd5b50610159600160a060020a0360043581169060243516611324565b3480156104fb57600080fd5b5061018261144a565b34801561051057600080fd5b50610519611450565b6040518082600381111561052957fe5b60ff16815260200191505060405180910390f35b34801561054957600080fd5b50610182611459565b610159600160a060020a03600435166105c6565b34801561057257600080fd5b5061020c61145f565b34801561058757600080fd5b50610159600160a060020a0360043516611467565b3480156105a857600080fd5b506101826114fc565b3480156105bd57600080fd5b50610295611502565b6000808080600160a060020a03851615156105e057600080fd5b6105e8611511565b15156105f357600080fd5b600160a060020a03851660009081526007602052604090206003015460ff161561061c57600080fd5b610624610e47565b34935061063085610d0d565b9250828411156106505761064a848463ffffffff61154116565b91508293505b6000841161065d57600080fd5b61066a8585600454610875565b90506000811161067657fe5b600554610689908563ffffffff61155316565b60055560008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260248201869052915191909216926340c10f1992604480820193602093909283900390910190829087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b505050506040513d602081101561072857600080fd5b5051151561073557600080fd5b60408051858152602081018390528151600160a060020a0388169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929081900390910190a3600160a060020a0385166000908152600760205260409020600101546107a9908563ffffffff61155316565b600160a060020a03861660009081526007602052604090206001810191909155600201546107dd908263ffffffff61155316565b600160a060020a03808716600090815260076020526040808220600201939093556003549251929091169186156108fc0291879190818181858888f1935050505015801561082f573d6000803e3d6000fd5b50811561086e57604051600160a060020a0386169083156108fc029084906000818181858888f1935050505015801561086c573d6000803e3d6000fd5b505b5050505050565b600160a060020a03831660009081526007602052604081206004015480158061089e5750806004145b806108a9575080600a145b15156108b157fe5b60008111156108f1576108ea836108de6108d1878563ffffffff61156916565b879063ffffffff61155316565b9063ffffffff61158016565b9150610904565b610901848463ffffffff61158016565b91505b509392505050565b60045481565b60025481565b600654600160a060020a0316331461092f57600080fd5b6000600d5460ff16600381111561094257fe5b1461094c57600080fd5b600455565b61095a33610a59565b565b6000600b544210801561098a5750600160a060020a0382166000908152600760205260409020600501546001145b15610997575060016109d4565b600c54421080156109c35750600160a060020a0382166000908152600760205260409020600501546002145b156109d0575060016109d4565b5060005b919050565b60055481565b600654600160a060020a031633146109f657600080fd5b60085460ff1615610a0657600080fd5b610a0e61145f565b1515610a1957600080fd5b610a216115a4565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16008805460ff19166001179055565b6000600160a060020a0382161515610a7057600080fd5b600160a060020a03821660009081526007602052604090206003015460ff161515600114610a9d57600080fd5b600160a060020a03821660009081526007602052604090206002015415610ac357600080fd5b600160a060020a03821660009081526007602052604081205411610ae657600080fd5b610aee610e47565b6003600d5460ff166003811115610b0157fe5b14610b0b57600080fd5b600454600160a060020a038316600090815260076020526040902054610b369163ffffffff61158016565b60008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301526024820186905291519495509116926340c10f1992604480840193602093929083900390910190829087803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d6020811015610bd357600080fd5b50511515610be057600080fd5b60408051600160a060020a03841681526020810183905281517f355d073376c545ace08b6df926659a4228940d3214a213a7f300f2ad3ca10ce2929181900390910190a1600160a060020a038216600090815260076020526040902060020154610c50908263ffffffff61155316565b600160a060020a0390921660009081526007602052604090206002019190915550565b600654600160a060020a03163314610c8a57600080fd5b60008054604080517f3f4ba83a0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692633f4ba83a9260048084019382900301818387803b158015610ce457600080fd5b505af1158015610cf8573d6000803e3d6000fd5b50505050565b600354600160a060020a031681565b6000806001600d5460ff166003811115610d2357fe5b1415610d9457600160a060020a038316600090815260076020526040902060018101549054610d579163ffffffff61154116565b9050610d70600554600a5461154190919063ffffffff16565b811115610d8f57600554600a54610d8c9163ffffffff61154116565b90505b610de4565b6002600d5460ff166003811115610da757fe5b1415610de457600160a060020a0383166000908152600760205260408120541115610de457600554600a54610de19163ffffffff61154116565b90505b92915050565b60015481565b60085460ff1681565b600654600160a060020a031681565b60076020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919260ff9091169186565b600c5481565b600a5460055410158015610e6c57506003600d5460ff166003811115610e6957fe5b14155b15610eea57600d805460ff191660031790556040805142815290517f4f27c566270debe1b8a29c9ff8413f6e10dc1757ddfb9e667cc2cc205042946d916020908290030190a16040805142815290517f2f5acfa415b12b6c51cfab9440997eb8391c513f2e8fe90ba8cd19b851facdda9181900360200190a161095a565b6001544210158015610efd575060095442105b8015610f1a57506001600d5460ff166003811115610f1757fe5b14155b15610f6557600d805460ff191660011790556040805142815290517f7ae66aa6794e64276976d872ac7e8376771c141ca007c7d540cf6c3a4e20d9d3916020908290030190a161095a565b6009544210158015610f7957506002544211155b8015610f9657506002600d5460ff166003811115610f9357fe5b14155b15610fe157600d805460ff191660021790556040805142815290517f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d501916020908290030190a161095a565b6003600d5460ff166003811115610ff457fe5b14158015611003575060025442115b1561095a57600d805460ff191660031790556040805142815290517f2f5acfa415b12b6c51cfab9440997eb8391c513f2e8fe90ba8cd19b851facdda916020908290030190a1565b6006546000908190600160a060020a0316331461106757600080fd5b85518751148015611079575084518751145b8015611086575083518751145b8015611093575082518751145b151561109e57600080fd5b600091505b865182101561131b5783828151811015156110ba57fe5b90602001906020020151600014806110e9575083828151811015156110db57fe5b906020019060200201516004145b8061110b575083828151811015156110fd57fe5b90602001906020020151600a145b151561111657600080fd5b6002838381518110151561112657fe5b60209081029091010151111561113b57600080fd5b868281518110151561114957fe5b906020019060200201519050858281518110151561116357fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912055845185908390811061119657fe5b602090810291909101810151600160a060020a038316600090815260079092526040909120600301805460ff191691151591909117905583518490839081106111db57fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912060040155825183908390811061121157fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912060050155865187908390811061124757fe5b90602001906020020151600160a060020a03167f77c09a19fcd5375bb199fef6f7ff5c86bb393ad9b0574d097475dbec3263d43d878481518110151561128957fe5b9060200190602002015187858151811015156112a157fe5b9060200190602002015187868151811015156112b957fe5b9060200190602002015187878151811015156112d157fe5b60209081029091018101516040805195865293151591850191909152838301919091526060830152519081900360800190a261131482600163ffffffff61155316565b91506110a3565b50505050505050565b600654600160a060020a0316331461133b57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0384169163a9059cbb91849184916370a08231916024808201926020929091908290030181600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b60095481565b600d5460ff1681565b600b5481565b600254421190565b600654600160a060020a0316331461147e57600080fd5b600160a060020a038116151561149357600080fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a5481565b600054600160a060020a031681565b6000806000600154421015801561152a57506002544211155b91505034151581801561153a5750805b9250505090565b60008282111561154d57fe5b50900390565b60008282018381101561156257fe5b9392505050565b600080828481151561157757fe5b04949350505050565b600082820283158061159c575082848281151561159957fe5b04145b151561156257fe5b60008060009054906101000a9004600160a060020a0316600160a060020a0316633d0c49246040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115f857600080fd5b505af115801561160c573d6000803e3d6000fd5b505050506040513d602081101561162257600080fd5b505160008054600354604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051949550600160a060020a03928316946340c10f199492909316926116d49286926318160ddd9260048083019360209383900390910190829087803b15801561169b57600080fd5b505af11580156116af573d6000803e3d6000fd5b505050506040513d60208110156116c557600080fd5b5051859063ffffffff61154116565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505050506040513d602081101561175057600080fd5b505060008054604080517f7d64bcb40000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692637d64bcb4926004808401936020939083900390910190829087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b505050506040513d60208110156117dd57600080fd5b505060008054600654604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051919092169263f2fde38b926024808201939182900301818387803b15801561184657600080fd5b505af115801561086e573d6000803e3d6000fd00a165627a7a72305820ab1d48b0ec09c9f04b81174885703b2beb0971d4e215cfcad8a7fd93a2fba2f1002960806040526003805460a060020a61ffff021916905534801561002157600080fd5b5060038054600160a060020a031990811633179182905560048054909116600160a060020a0392909216919091179055611066806100606000396000f3006080604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461012c57806306fdde0314610155578063095ea7b3146101df57806318160ddd1461020357806323b872dd1461022a578063313ce567146102545780633d0c4924146102695780633f4ba83a1461027e57806340c10f19146102955780635c975abb146102b957806366188463146102ce57806370a08231146102f25780637d64bcb4146103135780638456cb59146103285780638da5cb5b1461033d57806395d89b411461036e578063a9059cbb14610383578063bb957493146103a7578063d73dd623146103ce578063dd62ed3e146103f2578063e63b6b8714610419578063f2fde38b1461042e575b600080fd5b34801561013857600080fd5b5061014161044f565b604080519115158252519081900360200190f35b34801561016157600080fd5b5061016a610471565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101a457818101518382015260200161018c565b50505050905090810190601f1680156101d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101eb57600080fd5b50610141600160a060020a03600435166024356104aa565b34801561020f57600080fd5b506102186104d7565b60408051918252519081900360200190f35b34801561023657600080fd5b50610141600160a060020a03600435811690602435166044356104dd565b34801561026057600080fd5b50610218610593565b34801561027557600080fd5b50610218610598565b34801561028a57600080fd5b506102936105a8565b005b3480156102a157600080fd5b50610141600160a060020a0360043516602435610620565b3480156102c557600080fd5b5061014161065a565b3480156102da57600080fd5b50610141600160a060020a036004351660243561066a565b3480156102fe57600080fd5b50610218600160a060020a036004351661068e565b34801561031f57600080fd5b506101416106a9565b34801561033457600080fd5b50610293610729565b34801561034957600080fd5b506103526107a6565b60408051600160a060020a039092168252519081900360200190f35b34801561037a57600080fd5b5061016a6107b5565b34801561038f57600080fd5b50610141600160a060020a03600435166024356107ec565b3480156103b357600080fd5b50610293600160a060020a036004358116906024351661089c565b3480156103da57600080fd5b50610141600160a060020a03600435166024356109e1565b3480156103fe57600080fd5b50610218600160a060020a0360043581169060243516610a05565b34801561042557600080fd5b50610352610a30565b34801561043a57600080fd5b50610293600160a060020a0360043516610a3f565b6003547501000000000000000000000000000000000000000000900460ff1681565b6040805190810160405280602081526020017f446563656e7472616c697a656420496e737572616e63652050726f746f636f6c81525081565b60035460009060a060020a900460ff16156104c457600080fd5b6104ce8383610ad4565b90505b92915050565b60005481565b60048054604080517f3e03c84f000000000000000000000000000000000000000000000000000000008152600160a060020a0380881694820194909452905160009387931691633e03c84f91602480830192602092919082900301818887803b15801561054957600080fd5b505af115801561055d573d6000803e3d6000fd5b505050506040513d602081101561057357600080fd5b50511561057f57600080fd5b61058a858585610b3a565b95945050505050565b601281565b6b033b2e3c9fd0803ce800000081565b600354600160a060020a031633146105bf57600080fd5b60035460a060020a900460ff1615156105d757600080fd5b6003805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600080546b033b2e3c9fd0803ce800000090610642908463ffffffff610b5f16565b1115610650575060006104d1565b6104ce8383610b75565b60035460a060020a900460ff1681565b60035460009060a060020a900460ff161561068457600080fd5b6104ce8383610c92565b600160a060020a031660009081526001602052604090205490565b600354600090600160a060020a031633146106c357600080fd5b6003805475ff000000000000000000000000000000000000000000191675010000000000000000000000000000000000000000001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600354600160a060020a0316331461074057600080fd5b60035460a060020a900460ff161561075757600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600354600160a060020a031681565b60408051808201909152600381527f4449500000000000000000000000000000000000000000000000000000000000602082015281565b60048054604080517f3e03c84f00000000000000000000000000000000000000000000000000000000815233938101849052905160009392600160a060020a031691633e03c84f91602480830192602092919082900301818887803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050506040513d602081101561087e57600080fd5b50511561088a57600080fd5b6108948484610d82565b949350505050565b600354600160a060020a031633146108b357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0384169163a9059cbb91849184916370a08231916024808201926020929091908290030181600087803b15801561091f57600080fd5b505af1158015610933573d6000803e3d6000fd5b505050506040513d602081101561094957600080fd5b5051604080517c010000000000000000000000000000000000000000000000000000000063ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050506040513d60208110156109db57600080fd5b50505050565b60035460009060a060020a900460ff16156109fb57600080fd5b6104ce8383610da6565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600454600160a060020a031681565b600354600160a060020a03163314610a5657600080fd5b600160a060020a0381161515610a6b57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035460009060a060020a900460ff1615610b5457600080fd5b610894848484610e3f565b600082820183811015610b6e57fe5b9392505050565b600354600090600160a060020a03163314610b8f57600080fd5b6003547501000000000000000000000000000000000000000000900460ff1615610bb857600080fd5b600054610bcb908363ffffffff610b5f16565b6000908155600160a060020a038416815260016020526040902054610bf6908363ffffffff610b5f16565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b336000908152600260209081526040808320600160a060020a038616845290915281205480831115610ce757336000908152600260209081526040808320600160a060020a0388168452909152812055610d1c565b610cf7818463ffffffff610f6116565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60035460009060a060020a900460ff1615610d9c57600080fd5b6104ce8383610f73565b336000908152600260209081526040808320600160a060020a0386168452909152812054610dda908363ffffffff610b5f16565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600080600160a060020a0384161515610e5757600080fd5b50600160a060020a03841660008181526002602090815260408083203384528252808320549383526001909152902054610e97908463ffffffff610f6116565b600160a060020a038087166000908152600160205260408082209390935590861681522054610ecc908463ffffffff610b5f16565b600160a060020a038516600090815260016020526040902055610ef5818463ffffffff610f6116565b600160a060020a03808716600081815260026020908152604080832033845282529182902094909455805187815290519288169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3506001949350505050565b600082821115610f6d57fe5b50900390565b6000600160a060020a0383161515610f8a57600080fd5b33600090815260016020526040902054610faa908363ffffffff610f6116565b3360009081526001602052604080822092909255600160a060020a03851681522054610fdc908363ffffffff610b5f16565b600160a060020a0384166000818152600160209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3506001929150505600a165627a7a72305820dcbfff5de4a3b0f5ca6944f78565e29b6302d9417dd58bc7746af97037c3c3700029000000000000000000000000000000000000000000000000000000005b310370000000000000000000000000000000000000000000000000000000005b379af0000000000000000000000000000000000000000000000000000000005b55ed70000000000000000000000000000000000000000000000000000000005d3720f0000000000000000000000000000000000000000000000000000000005f19a5f0000000000000000000000000000000000000000000000cb49b44ba602d80000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000005c3095c53743b8857d6e1d107e5014cdc7b44efc
Deployed Bytecode
0x6080604052600436106101505763ffffffff60e060020a6000350416631adda83a811461015b5780632c4e722e146101945780633197cbb6146101a957806334fcf437146101be5780633884d635146101d65780633e03c84f146101eb5780634042b66f146102205780634bb278f3146102355780634faf94201461024a57806350669a031461026b578063521eb273146102805780635f2536f7146102b157806378e97925146102d25780638d4e4083146102e75780638da5cb5b146102fc57806392acb4d6146103115780639ff1b56f14610365578063b5cb06111461037a578063b70949c91461038f578063bb957493146104c8578063d3087ff5146104ef578063e7bb523314610504578063ebf652cc1461053d578063ec8ac4d814610552578063ecb70fb714610566578063f2fde38b1461057b578063fb86a4041461059c578063fc0c546a146105b1575b610159336105c6565b005b34801561016757600080fd5b50610182600160a060020a0360043516602435604435610875565b60408051918252519081900360200190f35b3480156101a057600080fd5b5061018261090c565b3480156101b557600080fd5b50610182610912565b3480156101ca57600080fd5b50610159600435610918565b3480156101e257600080fd5b50610159610951565b3480156101f757600080fd5b5061020c600160a060020a036004351661095c565b604080519115158252519081900360200190f35b34801561022c57600080fd5b506101826109d9565b34801561024157600080fd5b506101596109df565b34801561025657600080fd5b50610159600160a060020a0360043516610a59565b34801561027757600080fd5b50610159610c73565b34801561028c57600080fd5b50610295610cfe565b60408051600160a060020a039092168252519081900360200190f35b3480156102bd57600080fd5b50610182600160a060020a0360043516610d0d565b3480156102de57600080fd5b50610182610dea565b3480156102f357600080fd5b5061020c610df0565b34801561030857600080fd5b50610295610df9565b34801561031d57600080fd5b50610332600160a060020a0360043516610e08565b604080519687526020870195909552858501939093529015156060850152608084015260a0830152519081900360c00190f35b34801561037157600080fd5b50610182610e41565b34801561038657600080fd5b50610159610e47565b34801561039b57600080fd5b506040805160206004803580820135838102808601850190965280855261015995369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061104b9650505050505050565b3480156104d457600080fd5b50610159600160a060020a0360043581169060243516611324565b3480156104fb57600080fd5b5061018261144a565b34801561051057600080fd5b50610519611450565b6040518082600381111561052957fe5b60ff16815260200191505060405180910390f35b34801561054957600080fd5b50610182611459565b610159600160a060020a03600435166105c6565b34801561057257600080fd5b5061020c61145f565b34801561058757600080fd5b50610159600160a060020a0360043516611467565b3480156105a857600080fd5b506101826114fc565b3480156105bd57600080fd5b50610295611502565b6000808080600160a060020a03851615156105e057600080fd5b6105e8611511565b15156105f357600080fd5b600160a060020a03851660009081526007602052604090206003015460ff161561061c57600080fd5b610624610e47565b34935061063085610d0d565b9250828411156106505761064a848463ffffffff61154116565b91508293505b6000841161065d57600080fd5b61066a8585600454610875565b90506000811161067657fe5b600554610689908563ffffffff61155316565b60055560008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260248201869052915191909216926340c10f1992604480820193602093909283900390910190829087803b1580156106fe57600080fd5b505af1158015610712573d6000803e3d6000fd5b505050506040513d602081101561072857600080fd5b5051151561073557600080fd5b60408051858152602081018390528151600160a060020a0388169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929081900390910190a3600160a060020a0385166000908152600760205260409020600101546107a9908563ffffffff61155316565b600160a060020a03861660009081526007602052604090206001810191909155600201546107dd908263ffffffff61155316565b600160a060020a03808716600090815260076020526040808220600201939093556003549251929091169186156108fc0291879190818181858888f1935050505015801561082f573d6000803e3d6000fd5b50811561086e57604051600160a060020a0386169083156108fc029084906000818181858888f1935050505015801561086c573d6000803e3d6000fd5b505b5050505050565b600160a060020a03831660009081526007602052604081206004015480158061089e5750806004145b806108a9575080600a145b15156108b157fe5b60008111156108f1576108ea836108de6108d1878563ffffffff61156916565b879063ffffffff61155316565b9063ffffffff61158016565b9150610904565b610901848463ffffffff61158016565b91505b509392505050565b60045481565b60025481565b600654600160a060020a0316331461092f57600080fd5b6000600d5460ff16600381111561094257fe5b1461094c57600080fd5b600455565b61095a33610a59565b565b6000600b544210801561098a5750600160a060020a0382166000908152600760205260409020600501546001145b15610997575060016109d4565b600c54421080156109c35750600160a060020a0382166000908152600760205260409020600501546002145b156109d0575060016109d4565b5060005b919050565b60055481565b600654600160a060020a031633146109f657600080fd5b60085460ff1615610a0657600080fd5b610a0e61145f565b1515610a1957600080fd5b610a216115a4565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16008805460ff19166001179055565b6000600160a060020a0382161515610a7057600080fd5b600160a060020a03821660009081526007602052604090206003015460ff161515600114610a9d57600080fd5b600160a060020a03821660009081526007602052604090206002015415610ac357600080fd5b600160a060020a03821660009081526007602052604081205411610ae657600080fd5b610aee610e47565b6003600d5460ff166003811115610b0157fe5b14610b0b57600080fd5b600454600160a060020a038316600090815260076020526040902054610b369163ffffffff61158016565b60008054604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301526024820186905291519495509116926340c10f1992604480840193602093929083900390910190829087803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d6020811015610bd357600080fd5b50511515610be057600080fd5b60408051600160a060020a03841681526020810183905281517f355d073376c545ace08b6df926659a4228940d3214a213a7f300f2ad3ca10ce2929181900390910190a1600160a060020a038216600090815260076020526040902060020154610c50908263ffffffff61155316565b600160a060020a0390921660009081526007602052604090206002019190915550565b600654600160a060020a03163314610c8a57600080fd5b60008054604080517f3f4ba83a0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692633f4ba83a9260048084019382900301818387803b158015610ce457600080fd5b505af1158015610cf8573d6000803e3d6000fd5b50505050565b600354600160a060020a031681565b6000806001600d5460ff166003811115610d2357fe5b1415610d9457600160a060020a038316600090815260076020526040902060018101549054610d579163ffffffff61154116565b9050610d70600554600a5461154190919063ffffffff16565b811115610d8f57600554600a54610d8c9163ffffffff61154116565b90505b610de4565b6002600d5460ff166003811115610da757fe5b1415610de457600160a060020a0383166000908152600760205260408120541115610de457600554600a54610de19163ffffffff61154116565b90505b92915050565b60015481565b60085460ff1681565b600654600160a060020a031681565b60076020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919260ff9091169186565b600c5481565b600a5460055410158015610e6c57506003600d5460ff166003811115610e6957fe5b14155b15610eea57600d805460ff191660031790556040805142815290517f4f27c566270debe1b8a29c9ff8413f6e10dc1757ddfb9e667cc2cc205042946d916020908290030190a16040805142815290517f2f5acfa415b12b6c51cfab9440997eb8391c513f2e8fe90ba8cd19b851facdda9181900360200190a161095a565b6001544210158015610efd575060095442105b8015610f1a57506001600d5460ff166003811115610f1757fe5b14155b15610f6557600d805460ff191660011790556040805142815290517f7ae66aa6794e64276976d872ac7e8376771c141ca007c7d540cf6c3a4e20d9d3916020908290030190a161095a565b6009544210158015610f7957506002544211155b8015610f9657506002600d5460ff166003811115610f9357fe5b14155b15610fe157600d805460ff191660021790556040805142815290517f712173de1d50109191e0d0671c67415bf3d44508558069796106054c5600d501916020908290030190a161095a565b6003600d5460ff166003811115610ff457fe5b14158015611003575060025442115b1561095a57600d805460ff191660031790556040805142815290517f2f5acfa415b12b6c51cfab9440997eb8391c513f2e8fe90ba8cd19b851facdda916020908290030190a1565b6006546000908190600160a060020a0316331461106757600080fd5b85518751148015611079575084518751145b8015611086575083518751145b8015611093575082518751145b151561109e57600080fd5b600091505b865182101561131b5783828151811015156110ba57fe5b90602001906020020151600014806110e9575083828151811015156110db57fe5b906020019060200201516004145b8061110b575083828151811015156110fd57fe5b90602001906020020151600a145b151561111657600080fd5b6002838381518110151561112657fe5b60209081029091010151111561113b57600080fd5b868281518110151561114957fe5b906020019060200201519050858281518110151561116357fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912055845185908390811061119657fe5b602090810291909101810151600160a060020a038316600090815260079092526040909120600301805460ff191691151591909117905583518490839081106111db57fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912060040155825183908390811061121157fe5b6020908102909101810151600160a060020a03831660009081526007909252604090912060050155865187908390811061124757fe5b90602001906020020151600160a060020a03167f77c09a19fcd5375bb199fef6f7ff5c86bb393ad9b0574d097475dbec3263d43d878481518110151561128957fe5b9060200190602002015187858151811015156112a157fe5b9060200190602002015187868151811015156112b957fe5b9060200190602002015187878151811015156112d157fe5b60209081029091018101516040805195865293151591850191909152838301919091526060830152519081900360800190a261131482600163ffffffff61155316565b91506110a3565b50505050505050565b600654600160a060020a0316331461133b57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0384169163a9059cbb91849184916370a08231916024808201926020929091908290030181600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b505050506040513d6020811015610cf857600080fd5b60095481565b600d5460ff1681565b600b5481565b600254421190565b600654600160a060020a0316331461147e57600080fd5b600160a060020a038116151561149357600080fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a5481565b600054600160a060020a031681565b6000806000600154421015801561152a57506002544211155b91505034151581801561153a5750805b9250505090565b60008282111561154d57fe5b50900390565b60008282018381101561156257fe5b9392505050565b600080828481151561157757fe5b04949350505050565b600082820283158061159c575082848281151561159957fe5b04145b151561156257fe5b60008060009054906101000a9004600160a060020a0316600160a060020a0316633d0c49246040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115f857600080fd5b505af115801561160c573d6000803e3d6000fd5b505050506040513d602081101561162257600080fd5b505160008054600354604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051949550600160a060020a03928316946340c10f199492909316926116d49286926318160ddd9260048083019360209383900390910190829087803b15801561169b57600080fd5b505af11580156116af573d6000803e3d6000fd5b505050506040513d60208110156116c557600080fd5b5051859063ffffffff61154116565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505050506040513d602081101561175057600080fd5b505060008054604080517f7d64bcb40000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692637d64bcb4926004808401936020939083900390910190829087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b505050506040513d60208110156117dd57600080fd5b505060008054600654604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051919092169263f2fde38b926024808201939182900301818387803b15801561184657600080fd5b505af115801561086e573d6000803e3d6000fd00a165627a7a72305820ab1d48b0ec09c9f04b81174885703b2beb0971d4e215cfcad8a7fd93a2fba2f10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000005b310370000000000000000000000000000000000000000000000000000000005b379af0000000000000000000000000000000000000000000000000000000005b55ed70000000000000000000000000000000000000000000000000000000005d3720f0000000000000000000000000000000000000000000000000000000005f19a5f0000000000000000000000000000000000000000000000cb49b44ba602d80000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000005c3095c53743b8857d6e1d107e5014cdc7b44efc
-----Decoded View---------------
Arg [0] : _startTime (uint256): 1529938800
Arg [1] : _startOpenPpTime (uint256): 1530370800
Arg [2] : _endTime (uint256): 1532358000
Arg [3] : _lockInTime1 (uint256): 1563894000
Arg [4] : _lockInTime2 (uint256): 1595516400
Arg [5] : _hardCap (uint256): 60000000000000000000000
Arg [6] : _rate (uint256): 5000
Arg [7] : _wallet (address): 0x5C3095c53743b8857D6E1D107e5014cDC7B44efc
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005b310370
Arg [1] : 000000000000000000000000000000000000000000000000000000005b379af0
Arg [2] : 000000000000000000000000000000000000000000000000000000005b55ed70
Arg [3] : 000000000000000000000000000000000000000000000000000000005d3720f0
Arg [4] : 000000000000000000000000000000000000000000000000000000005f19a5f0
Arg [5] : 000000000000000000000000000000000000000000000cb49b44ba602d800000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000001388
Arg [7] : 0000000000000000000000005c3095c53743b8857d6e1d107e5014cdc7b44efc
Swarm Source
bzzr://dcbfff5de4a3b0f5ca6944f78565e29b6302d9417dd58bc7746af97037c3c370
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.