More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,697 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 5090777 | 2540 days ago | IN | 1.5 ETH | 0.000861 | ||||
Transfer | 5054432 | 2546 days ago | IN | 0.3 ETH | 0.0004276 | ||||
Transfer | 4953877 | 2563 days ago | IN | 0.01 ETH | 0.00044898 | ||||
Transfer | 4926846 | 2568 days ago | IN | 0.12818612 ETH | 0.0008552 | ||||
Transfer | 4897204 | 2573 days ago | IN | 0.3 ETH | 0.00087658 | ||||
Transfer | 4893564 | 2574 days ago | IN | 1 ETH | 0.00021 | ||||
Transfer | 4893469 | 2574 days ago | IN | 0.3 ETH | 0.0008552 | ||||
Transfer | 4892101 | 2574 days ago | IN | 1.98 ETH | 0.00042 | ||||
Transfer | 4890457 | 2574 days ago | IN | 0.00083247 ETH | 0.00042 | ||||
Transfer | 4887698 | 2575 days ago | IN | 0.4 ETH | 0.0029932 | ||||
Transfer | 4886550 | 2575 days ago | IN | 1.51 ETH | 0.0008552 | ||||
Transfer | 4886522 | 2575 days ago | IN | 1.51 ETH | 0.0008552 | ||||
Transfer | 4885757 | 2575 days ago | IN | 1 ETH | 0.0014966 | ||||
Transfer | 4884584 | 2575 days ago | IN | 0.5 ETH | 0.0012828 | ||||
Transfer | 4884550 | 2575 days ago | IN | 0.5 ETH | 0.00211662 | ||||
Transfer | 4883148 | 2576 days ago | IN | 1 ETH | 0.0009621 | ||||
Transfer | 4882985 | 2576 days ago | IN | 0.3 ETH | 0.00087658 | ||||
Transfer | 4882799 | 2576 days ago | IN | 2 ETH | 0.0005345 | ||||
Transfer | 4882797 | 2576 days ago | IN | 2 ETH | 0.0005345 | ||||
Transfer | 4881714 | 2576 days ago | IN | 0.4 ETH | 0.0023518 | ||||
Transfer | 4881707 | 2576 days ago | IN | 0.4 ETH | 0.00231 | ||||
Transfer | 4881397 | 2576 days ago | IN | 0.98 ETH | 0.00044898 | ||||
Transfer | 4880496 | 2576 days ago | IN | 0.4 ETH | 0.0008552 | ||||
Transfer | 4880466 | 2576 days ago | IN | 0.4 ETH | 0.001069 | ||||
Transfer | 4880429 | 2576 days ago | IN | 0.4 ETH | 0.00200972 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
4874232 | 2577 days ago | 0.5 ETH | ||||
4873948 | 2577 days ago | 0.305 ETH | ||||
4873948 | 2577 days ago | 2 ETH | ||||
4873948 | 2577 days ago | 0.39828656 ETH | ||||
4873948 | 2577 days ago | 4 ETH | ||||
4873948 | 2577 days ago | 0.38 ETH | ||||
4873948 | 2577 days ago | 0.8 ETH | ||||
4873948 | 2577 days ago | 0.5 ETH | ||||
4873948 | 2577 days ago | 2.98 ETH | ||||
4873948 | 2577 days ago | 0.3 ETH | ||||
4873948 | 2577 days ago | 0.3 ETH | ||||
4873948 | 2577 days ago | 1 ETH | ||||
4873948 | 2577 days ago | 0.4 ETH | ||||
4873948 | 2577 days ago | 0.515 ETH | ||||
4873948 | 2577 days ago | 1 ETH | ||||
4873948 | 2577 days ago | 0.4 ETH | ||||
4873948 | 2577 days ago | 0.3 ETH | ||||
4873948 | 2577 days ago | 0.3 ETH | ||||
4873948 | 2577 days ago | 1.01872899 ETH | ||||
4873948 | 2577 days ago | 2 ETH | ||||
4873948 | 2577 days ago | 0.6 ETH | ||||
4873948 | 2577 days ago | 1 ETH | ||||
4873948 | 2577 days ago | 5 ETH | ||||
4873948 | 2577 days ago | 0.69 ETH | ||||
4873948 | 2577 days ago | 0.303 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TelcoinSaleKYCEscrow
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-12-17 */ pragma solidity 0.4.18; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } 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; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract Telcoin { using SafeMath for uint256; event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); string public constant name = "Telcoin"; string public constant symbol = "TEL"; uint8 public constant decimals = 2; /// The ERC20 total fixed supply of tokens. uint256 public constant totalSupply = 100000000000 * (10 ** uint256(decimals)); /// Account balances. mapping(address => uint256) balances; /// The transfer allowances. mapping (address => mapping (address => uint256)) internal allowed; /// The initial distributor is responsible for allocating the supply /// into the various pools described in the whitepaper. This can be /// verified later from the event log. function Telcoin(address _distributor) public { balances[_distributor] = totalSupply; Transfer(0x0, _distributor, totalSupply); } /// ERC20 balanceOf(). function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } /// ERC20 transfer(). function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); // 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; } /// ERC20 transferFrom(). function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } /// ERC20 approve(). Comes with the standard caveat that an approval /// meant to limit spending may actually allow more to be spent due to /// unfortunate ordering of transactions. For safety, this method /// should only be called if the current allowance is 0. Alternatively, /// non-ERC20 increaseApproval() and decreaseApproval() can be used. function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /// ERC20 allowance(). function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /// Not officially ERC20. Allows an allowance to be increased safely. function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /// Not officially ERC20. Allows an allowance to be decreased safely. function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { 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; } } contract TelcoinSaleToken { using SafeMath for uint256; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event Mint(address indexed to, uint256 amount); event MintFinished(); event Redeem(address indexed beneficiary, uint256 sacrificedValue, uint256 grantedValue); event Transfer(address indexed from, address indexed to, uint256 value); /// The owner of the contract. address public owner; /// The total number of minted tokens, excluding destroyed tokens. uint256 public totalSupply; /// The token balance and released amount of each address. mapping(address => uint256) balances; mapping(address => uint256) redeemed; /// Whether the token is still mintable. bool public mintingFinished = false; /// Redeemable telcoin. Telcoin telcoin; uint256 public totalRedeemed; /// Vesting period. uint256 vestingStart; uint256 vestingDuration; modifier onlyOwner() { require(msg.sender == owner); _; } function TelcoinSaleToken( Telcoin _telcoin, uint256 _vestingStart, uint256 _vestingDuration ) public { owner = msg.sender; telcoin = _telcoin; vestingStart = _vestingStart; vestingDuration = _vestingDuration; } function finishMinting() onlyOwner public returns (bool) { require(!mintingFinished); mintingFinished = true; MintFinished(); return true; } function mint(address _to, uint256 _amount) onlyOwner public returns (bool) { require(_to != 0x0); require(!mintingFinished); require(_amount > 0); totalSupply = totalSupply.add(_amount); balances[_to] = balances[_to].add(_amount); Mint(_to, _amount); Transfer(0x0, _to, _amount); return true; } function redeemMany(address[] _beneficiaries) public { for (uint256 i = 0; i < _beneficiaries.length; i++) { redeem(_beneficiaries[i]); } } function redeem(address _beneficiary) public returns (uint256) { require(mintingFinished); require(_beneficiary != 0x0); uint256 balance = redeemableBalance(_beneficiary); if (balance == 0) { return 0; } uint256 totalDistributable = telcoin.balanceOf(this).add(totalRedeemed); // Avoid loss of precision by multiplying and later dividing by // a large value. uint256 amount = balance.mul(10 ** 18).div(totalSupply).mul(totalDistributable).div(10 ** 18); balances[_beneficiary] = balances[_beneficiary].sub(balance); redeemed[_beneficiary] = redeemed[_beneficiary].add(balance); balances[telcoin] = balances[telcoin].add(balance); totalRedeemed = totalRedeemed.add(amount); Transfer(_beneficiary, telcoin, balance); Redeem(_beneficiary, balance, amount); telcoin.transfer(_beneficiary, amount); return amount; } function transferOwnership(address _to) onlyOwner public { require(_to != address(0)); OwnershipTransferred(owner, _to); owner = _to; } function balanceOf(address _owner) public constant returns (uint256) { return balances[_owner]; } function redeemableBalance(address _beneficiary) public constant returns (uint256) { return vestedBalance(_beneficiary).sub(redeemed[_beneficiary]); } function vestedBalance(address _beneficiary) public constant returns (uint256) { uint256 currentBalance = balances[_beneficiary]; uint256 totalBalance = currentBalance.add(redeemed[_beneficiary]); if (now < vestingStart) { return 0; } if (now >= vestingStart.add(vestingDuration)) { return totalBalance; } return totalBalance.mul(now.sub(vestingStart)).div(vestingDuration); } } contract TelcoinSale { using SafeMath for uint256; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event WalletChanged(address indexed previousWallet, address indexed newWallet); event TokenPurchase( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount, uint256 bonusAmount ); event TokenAltPurchase( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount, uint256 bonusAmount, string symbol, string transactionId ); event Pause(); event Unpause(); event Withdrawal(address indexed wallet, uint256 weiAmount); event Extended(uint256 until); event Finalized(); event Refunding(); event Refunded(address indexed beneficiary, uint256 weiAmount); event Whitelisted( address indexed participant, uint256 minWeiAmount, uint256 maxWeiAmount, uint32 bonusRate ); event CapFlexed(uint32 flex); /// The owner of the contract. address public owner; /// The temporary token we're selling. Sale tokens can be converted /// immediately upon successful completion of the sale. Bonus tokens /// are on a separate vesting schedule. TelcoinSaleToken public saleToken; TelcoinSaleToken public bonusToken; /// The token we'll convert to after the sale ends. Telcoin public telcoin; /// The minimum and maximum goals to reach. If the soft cap is not reached /// by the end of the sale, the contract will enter refund mode. If the /// hard cap is reached, the contract can be finished early. /// /// Due to our actual soft cap being tied to USD and the assumption that /// the value of Ether will continue to increase during the ICO, we /// implement a fixed minimum softcap that accounts for a 2.5x value /// increase. The capFlex is a scale factor that allows us to scale the /// caps above the fixed minimum values. Initially the scale factor will /// be set so that our effective soft cap is ~10M USD. uint256 public softCap; uint256 public hardCap; uint32 public capFlex; /// The sale period. uint256 public startTime; uint256 public endTime; uint256 public timeExtension; /// The numnber of tokens to mint per wei. uint256 public rate; /// The total number of wei raised. Note that the contract's balance may /// differ from this value if someone has decided to forcefully send us /// ether. uint256 public weiRaised; /// The wallet that will receive the contract's balance once the sale /// finishes and the soft cap is reached. address public wallet; /// The list of addresses that are allowed to participate in the sale, /// up to what amount, and any special rate they may have, provided /// that they do in fact participate with at least the minimum value /// they agreed to. mapping(address => uint256) public whitelistedMin; mapping(address => uint256) public whitelistedMax; mapping(address => uint32) public bonusRates; /// The amount of wei and wei equivalents invested by each investor. mapping(address => uint256) public deposited; mapping(address => uint256) public altDeposited; /// An enumerable list of investors. address[] public investors; /// Whether the sale is paused. bool public paused = false; /// Whether the sale has finished, and when. bool public finished = false; uint256 public finishedAt; /// Whether we're accepting refunds. bool public refunding = false; /// The total number of wei refunded. uint256 public weiRefunded; modifier onlyOwner() { require(msg.sender == owner); _; } modifier saleOpen() { require(!finished); require(!paused); require(now >= startTime); require(now <= endTime + timeExtension); _; } function TelcoinSale( uint256 _softCap, uint256 _hardCap, uint32 _capFlex, uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet, Telcoin _telcoin, uint256 _bonusVestingStart, uint256 _bonusVestingDuration ) public payable { require(msg.value > 0); require(_softCap > 0); require(_hardCap >= _softCap); require(_startTime >= now); require(_endTime >= _startTime); require(_rate > 0); require(_wallet != 0x0); owner = msg.sender; softCap = _softCap; hardCap = _hardCap; capFlex = _capFlex; startTime = _startTime; endTime = _endTime; rate = _rate; wallet = _wallet; telcoin = _telcoin; saleToken = new TelcoinSaleToken(telcoin, 0, 0); bonusToken = new TelcoinSaleToken( telcoin, _bonusVestingStart, _bonusVestingDuration ); wallet.transfer(msg.value); } function () public payable { buyTokens(msg.sender); } function buyTokens(address _beneficiary) saleOpen public payable { require(_beneficiary != address(0)); uint256 weiAmount = msg.value; require(weiAmount > 0); require(weiRaised.add(weiAmount) <= hardCap); uint256 totalPrior = totalDeposited(_beneficiary); uint256 totalAfter = totalPrior.add(weiAmount); require(totalAfter <= whitelistedMax[_beneficiary]); uint256 saleTokens; uint256 bonusTokens; (saleTokens, bonusTokens) = tokensForPurchase(_beneficiary, weiAmount); uint256 newDeposited = deposited[_beneficiary].add(weiAmount); deposited[_beneficiary] = newDeposited; investors.push(_beneficiary); weiRaised = weiRaised.add(weiAmount); saleToken.mint(_beneficiary, saleTokens); if (bonusTokens > 0) { bonusToken.mint(_beneficiary, bonusTokens); } TokenPurchase( msg.sender, _beneficiary, weiAmount, saleTokens, bonusTokens ); } function changeWallet(address _wallet) onlyOwner public payable { require(_wallet != 0x0); require(msg.value > 0); WalletChanged(wallet, _wallet); wallet = _wallet; wallet.transfer(msg.value); } function extendTime(uint256 _timeExtension) onlyOwner public { require(!finished); require(now < endTime + timeExtension); require(_timeExtension > 0); timeExtension = timeExtension.add(_timeExtension); require(timeExtension <= 7 days); Extended(endTime.add(timeExtension)); } function finish() onlyOwner public { require(!finished); require(hardCapReached() || now > endTime + timeExtension); finished = true; finishedAt = now; saleToken.finishMinting(); bonusToken.finishMinting(); uint256 distributableCoins = telcoin.balanceOf(this); if (softCapReached()) { uint256 saleTokens = saleToken.totalSupply(); uint256 bonusTokens = bonusToken.totalSupply(); uint256 totalTokens = saleTokens.add(bonusTokens); // Avoid loss of precision by multiplying and later dividing by // a large value. uint256 bonusPortion = bonusTokens.mul(10 ** 18).div(totalTokens).mul(distributableCoins).div(10 ** 18); uint256 salePortion = distributableCoins.sub(bonusPortion); saleToken.transferOwnership(owner); bonusToken.transferOwnership(owner); telcoin.transfer(saleToken, salePortion); telcoin.transfer(bonusToken, bonusPortion); withdraw(); } else { refunding = true; telcoin.transfer(wallet, distributableCoins); Refunding(); } Finalized(); } function pause() onlyOwner public { require(!paused); paused = true; Pause(); } function refundMany(address[] _investors) public { for (uint256 i = 0; i < _investors.length; i++) { refund(_investors[i]); } } function refund(address _investor) public { require(finished); require(refunding); require(deposited[_investor] > 0); uint256 weiAmount = deposited[_investor]; deposited[_investor] = 0; weiRefunded = weiRefunded.add(weiAmount); Refunded(_investor, weiAmount); _investor.transfer(weiAmount); } function registerAltPurchase( address _beneficiary, string _symbol, string _transactionId, uint256 _weiAmount ) saleOpen onlyOwner public { require(_beneficiary != address(0)); require(totalDeposited(_beneficiary).add(_weiAmount) <= whitelistedMax[_beneficiary]); uint256 saleTokens; uint256 bonusTokens; (saleTokens, bonusTokens) = tokensForPurchase(_beneficiary, _weiAmount); uint256 newAltDeposited = altDeposited[_beneficiary].add(_weiAmount); altDeposited[_beneficiary] = newAltDeposited; investors.push(_beneficiary); weiRaised = weiRaised.add(_weiAmount); saleToken.mint(_beneficiary, saleTokens); if (bonusTokens > 0) { bonusToken.mint(_beneficiary, bonusTokens); } TokenAltPurchase( msg.sender, _beneficiary, _weiAmount, saleTokens, bonusTokens, _symbol, _transactionId ); } function transferOwnership(address _to) onlyOwner public { require(_to != address(0)); OwnershipTransferred(owner, _to); owner = _to; } function unpause() onlyOwner public { require(paused); paused = false; Unpause(); } function updateCapFlex(uint32 _capFlex) onlyOwner public { require(!finished); capFlex = _capFlex; CapFlexed(capFlex); } function whitelistMany( address[] _participants, uint256 _minWeiAmount, uint256 _maxWeiAmount, uint32 _bonusRate ) onlyOwner public { for (uint256 i = 0; i < _participants.length; i++) { whitelist( _participants[i], _minWeiAmount, _maxWeiAmount, _bonusRate ); } } function whitelist( address _participant, uint256 _minWeiAmount, uint256 _maxWeiAmount, uint32 _bonusRate ) onlyOwner public { require(_participant != 0x0); require(_bonusRate <= 400); whitelistedMin[_participant] = _minWeiAmount; whitelistedMax[_participant] = _maxWeiAmount; bonusRates[_participant] = _bonusRate; Whitelisted( _participant, _minWeiAmount, _maxWeiAmount, _bonusRate ); } function withdraw() onlyOwner public { require(softCapReached() || (finished && now > finishedAt + 14 days)); uint256 weiAmount = this.balance; if (weiAmount > 0) { wallet.transfer(weiAmount); Withdrawal(wallet, weiAmount); } } function hardCapReached() public constant returns (bool) { return weiRaised >= hardCap.mul(1000 + capFlex).div(1000); } function tokensForPurchase( address _beneficiary, uint256 _weiAmount ) public constant returns (uint256, uint256) { uint256 baseTokens = _weiAmount.mul(rate); uint256 totalPrior = totalDeposited(_beneficiary); uint256 totalAfter = totalPrior.add(_weiAmount); // Has the beneficiary passed the assigned minimum purchase level? if (totalAfter < whitelistedMin[_beneficiary]) { return (baseTokens, 0); } uint32 bonusRate = bonusRates[_beneficiary]; uint256 baseBonus = baseTokens.mul(1000 + bonusRate).div(1000).sub(baseTokens); // Do we pass the minimum purchase level with this purchase? if (totalPrior < whitelistedMin[_beneficiary]) { uint256 balancePrior = totalPrior.mul(rate); uint256 accumulatedBonus = balancePrior.mul(1000 + bonusRate).div(1000).sub(balancePrior); return (baseTokens, accumulatedBonus.add(baseBonus)); } return (baseTokens, baseBonus); } function totalDeposited(address _investor) public constant returns (uint256) { return deposited[_investor].add(altDeposited[_investor]); } function softCapReached() public constant returns (bool) { return weiRaised >= softCap.mul(1000 + capFlex).div(1000); } } contract TelcoinSaleKYCEscrow { using SafeMath for uint256; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ValuePlaced(address indexed purchaser, address indexed beneficiary, uint256 amount); event Approved(address indexed participant); event Rejected(address indexed participant); event Closed(); /// The owner of the contract. address public owner; /// The actual sale. TelcoinSale public sale; /// Whether the escrow has closed. bool public closed = false; /// The amount of wei and wei equivalents invested by each investor. mapping(address => uint256) public deposited; modifier onlyOwner() { require(msg.sender == owner); _; } modifier escrowOpen() { require(!closed); _; } function TelcoinSaleKYCEscrow(TelcoinSale _sale) public { require(_sale != address(0)); owner = msg.sender; sale = _sale; } function () public payable { placeValue(msg.sender); } function approve(address _participant) onlyOwner public { uint256 weiAmount = deposited[_participant]; require(weiAmount > 0); deposited[_participant] = 0; Approved(_participant); sale.buyTokens.value(weiAmount)(_participant); } function approveMany(address[] _participants) onlyOwner public { for (uint256 i = 0; i < _participants.length; i++) { approve(_participants[i]); } } function close() onlyOwner public { require(!closed); closed = true; Closed(); } function placeValue(address _beneficiary) escrowOpen public payable { require(_beneficiary != address(0)); uint256 weiAmount = msg.value; require(weiAmount > 0); uint256 newDeposited = deposited[_beneficiary].add(weiAmount); deposited[_beneficiary] = newDeposited; ValuePlaced( msg.sender, _beneficiary, weiAmount ); } function reject(address _participant) onlyOwner public { uint256 weiAmount = deposited[_participant]; require(weiAmount > 0); deposited[_participant] = 0; Rejected(_participant); require(_participant.call.value(weiAmount)()); } function rejectMany(address[] _participants) onlyOwner public { for (uint256 i = 0; i < _participants.length; i++) { reject(_participants[i]); } } function transferOwnership(address _to) onlyOwner public { require(_to != address(0)); OwnershipTransferred(owner, _to); owner = _to; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_participants","type":"address[]"}],"name":"rejectMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"closed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"placeValue","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_participant","type":"address"}],"name":"reject","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_participants","type":"address[]"}],"name":"approveMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_participant","type":"address"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_sale","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":"amount","type":"uint256"}],"name":"ValuePlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Approved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Rejected","type":"event"},{"anonymous":false,"inputs":[],"name":"Closed","type":"event"}]
Contract Creation Code
60606040526000600160146101000a81548160ff021916908315150217905550341561002a57600080fd5b604051602080610d8e83398101604052808051906020019091905050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561008257600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610c7b806101136000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631b1e5d5d146100ba57806343d726d614610114578063597e1fb5146101295780636ad1fe02146101565780638da5cb5b146101ab578063a374480a14610200578063ab0da5a91461022e578063bb70705914610267578063cb13cddb146102c1578063daea85c51461030e578063f2fde38b14610347575b6100b833610380565b005b34156100c557600080fd5b6101126004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104ef565b005b341561011f57600080fd5b61012761058b565b005b341561013457600080fd5b61013c61064a565b604051808215151515815260200191505060405180910390f35b341561016157600080fd5b61016961065d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b657600080fd5b6101be610683565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610380565b005b341561023957600080fd5b610265600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a8565b005b341561027257600080fd5b6102bf60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061081d565b005b34156102cc57600080fd5b6102f8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108b9565b6040518082815260200191505060405180910390f35b341561031957600080fd5b610345600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d1565b005b341561035257600080fd5b61037e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610adc565b005b600080600160149054906101000a900460ff1615151561039f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156103db57600080fd5b3491506000821115156103ed57600080fd5b61043f82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c3190919063ffffffff16565b905080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f25aef7442b0598bbb138d66173db749b5ecbc084c908aadc631b7fcde53236e3846040518082815260200191505060405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054c57600080fd5b600090505b81518110156105875761057a828281518110151561056b57fe5b906020019060200201516106a8565b8080600101915050610551565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105e657600080fd5b600160149054906101000a900460ff1615151561060257600080fd5b60018060146101000a81548160ff0219169083151502179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111151561075657600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167faf77f8960cf590e245ec8b6d41c193a5dcacad8986ae4eb57ac9e5be7b6af03160405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185876187965a03f192505050151561081957600080fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b600090505b81518110156108b5576108a8828281518110151561089957fe5b906020019060200201516108d1565b808060010191505061087f565b5050565b60026020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561092e57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111151561097f57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e60405160405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec8ac4d882846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515610ac357600080fd5b6125ee5a03f11515610ad457600080fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b7357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515610c4557fe5b80915050929150505600a165627a7a7230582025871790f8a41b0fb34900dc5ee5c6233523c34ee5bb5d724cf5f7dcef11b20f002900000000000000000000000078f7ef08b4583f9866d8a98a9f2d9b64d9c02380
Deployed Bytecode
0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631b1e5d5d146100ba57806343d726d614610114578063597e1fb5146101295780636ad1fe02146101565780638da5cb5b146101ab578063a374480a14610200578063ab0da5a91461022e578063bb70705914610267578063cb13cddb146102c1578063daea85c51461030e578063f2fde38b14610347575b6100b833610380565b005b34156100c557600080fd5b6101126004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104ef565b005b341561011f57600080fd5b61012761058b565b005b341561013457600080fd5b61013c61064a565b604051808215151515815260200191505060405180910390f35b341561016157600080fd5b61016961065d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b657600080fd5b6101be610683565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61022c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610380565b005b341561023957600080fd5b610265600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a8565b005b341561027257600080fd5b6102bf60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061081d565b005b34156102cc57600080fd5b6102f8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108b9565b6040518082815260200191505060405180910390f35b341561031957600080fd5b610345600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d1565b005b341561035257600080fd5b61037e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610adc565b005b600080600160149054906101000a900460ff1615151561039f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156103db57600080fd5b3491506000821115156103ed57600080fd5b61043f82600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c3190919063ffffffff16565b905080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f25aef7442b0598bbb138d66173db749b5ecbc084c908aadc631b7fcde53236e3846040518082815260200191505060405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054c57600080fd5b600090505b81518110156105875761057a828281518110151561056b57fe5b906020019060200201516106a8565b8080600101915050610551565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105e657600080fd5b600160149054906101000a900460ff1615151561060257600080fd5b60018060146101000a81548160ff0219169083151502179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111151561075657600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167faf77f8960cf590e245ec8b6d41c193a5dcacad8986ae4eb57ac9e5be7b6af03160405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185876187965a03f192505050151561081957600080fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b600090505b81518110156108b5576108a8828281518110151561089957fe5b906020019060200201516108d1565b808060010191505061087f565b5050565b60026020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561092e57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111151561097f57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f5d91bd0cecc45fef102af61de92c5462fadc884a5ce9d21c15e8a85198f2349e60405160405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec8ac4d882846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515610ac357600080fd5b6125ee5a03f11515610ad457600080fd5b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b7357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284019050838110151515610c4557fe5b80915050929150505600a165627a7a7230582025871790f8a41b0fb34900dc5ee5c6233523c34ee5bb5d724cf5f7dcef11b20f0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000078f7ef08b4583f9866d8a98a9f2d9b64d9c02380
-----Decoded View---------------
Arg [0] : _sale (address): 0x78F7eF08b4583F9866D8a98A9f2D9B64d9c02380
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000078f7ef08b4583f9866d8a98a9f2d9b64d9c02380
Swarm Source
bzzr://25871790f8a41b0fb34900dc5ee5c6233523c34ee5bb5d724cf5f7dcef11b20f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1.9 | 100 | $190 |
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.