Transaction Hash:
Block:
6483173 at Oct-09-2018 02:16:46 PM +UTC
Transaction Fee:
0.001035483 ETH
$1.96
Gas Used:
120,056 Gas / 8.625 Gwei
Emitted Events:
64 |
ProofofNoDump.onTokenPurchase( customerAddress=[Sender] 0x0fe6967f9a5bb235fc74a63e3f3fc5853c55c083, incomingEthereum=564000000000000000, tokensMinted=153633713076951051300, referredBy=0x00000000...000000000, timestamp=1539094606, price=3596970000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x0FE6967F...53c55C083 |
4.335986705792977518 Eth
Nonce: 226
|
3.734951222792977518 Eth
Nonce: 227
| 0.601035483 | ||
0x20007c6a...FF43B5ed8 | 2.182778101758601933 Eth | 2.194778101758601933 Eth | 0.012 | ||
0x829BD824...93333A830
Miner
| (F2Pool Old) | 7,808.395287576845045573 Eth | 7,808.396323059845045573 Eth | 0.001035483 | |
0xB54C9FA2...BC9657F5F | 56.556380755196005067 Eth | 57.120380755196005067 Eth | 0.564 | ||
0xBFb29761...299C9F8d0 | 3.541173006232632546 Eth | 3.553173006232632546 Eth | 0.012 | ||
0xC558895a...9Fb66B660 | 2.250931486762616979 Eth | 2.262931486762616979 Eth | 0.012 |
Execution Trace
ETH 0.6
ProofofNoDump.buy( _referredBy=0x0000000000000000000000000000000000000000 ) => ( 0 )

- ETH 0.012
0xbfb297616ffa0124a288e212d1e6df5299c9f8d0.CALL( )
- ETH 0.012
0xc558895ae123bb02b3c33164fdec34e9fb66b660.CALL( )
- ETH 0.012
0x20007c6aa01e6a0e73d1bab69666438ff43b5ed8.CALL( )
buy[ProofofNoDump (ln:81)]
transfer[ProofofNoDump (ln:82)]
mul[ProofofNoDump (ln:82)]
div[ProofofNoDump (ln:82)]
transfer[ProofofNoDump (ln:83)]
mul[ProofofNoDump (ln:83)]
div[ProofofNoDump (ln:83)]
transfer[ProofofNoDump (ln:84)]
mul[ProofofNoDump (ln:84)]
div[ProofofNoDump (ln:84)]
div[ProofofNoDump (ln:85)]
mul[ProofofNoDump (ln:85)]
sub[ProofofNoDump (ln:86)]
purchaseTokens[ProofofNoDump (ln:87)]
div[ProofofNoDump (ln:246)]
mul[ProofofNoDump (ln:246)]
div[ProofofNoDump (ln:247)]
mul[ProofofNoDump (ln:247)]
div[ProofofNoDump (ln:248)]
mul[ProofofNoDump (ln:248)]
sub[ProofofNoDump (ln:249)]
sub[ProofofNoDump (ln:250)]
sub[ProofofNoDump (ln:251)]
ethereumToTokens_[ProofofNoDump (ln:252)]
add[ProofofNoDump (ln:255)]
add[ProofofNoDump (ln:262)]
add[ProofofNoDump (ln:264)]
add[ProofofNoDump (ln:269)]
add[ProofofNoDump (ln:276)]
onTokenPurchase[ProofofNoDump (ln:279)]
buyPrice[ProofofNoDump (ln:279)]
pragma solidity ^0.4.25; /* * * Proof of No Dump * * [?] 35% Withdraw fee * [?] 15% Deposit fee * [?] 1% Token transfer * [?] 30% Referral link * */ contract ProofofNoDump{ using SafeMath for uint256; modifier onlyBagholders { require(myTokens() > 0); _; } modifier onlyStronghands { require(myDividends(true) > 0); _; } event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted, address indexed referredBy, uint timestamp, uint256 price ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned, uint timestamp, uint256 price ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); event Transfer( address indexed from, address indexed to, uint256 tokens ); string public name = "Proof Of No Dump"; string public symbol = "POND"; uint8 constant public decimals = 18; uint8 constant internal entryFee_ = 15; uint8 constant internal transferFee_ = 1; uint8 constant internal exitFee_ = 29; uint8 constant internal refferalFee_ = 30; uint256 constant internal tokenPriceInitial_ = 0.0000001 ether; uint256 constant internal tokenPriceIncremental_ = 0.0000001 ether; uint256 constant internal magnitude = 2 ** 64; uint256 public stakingRequirement = 50e18; mapping(address => uint256) internal tokenBalanceLedger_; mapping(address => uint256) internal referralBalance_; mapping(address => int256) internal payoutsTo_; uint256 internal tokenSupply_; uint256 internal profitPerShare_; address promoter1 = 0xbfb297616ffa0124a288e212d1e6df5299c9f8d0; address promoter2 = 0xC558895aE123BB02b3c33164FdeC34E9Fb66B660; address promoter3 = 0x20007c6aa01e6a0e73d1baB69666438FF43B5ed8; function buy(address _referredBy) public payable returns (uint256) { promoter1.transfer(msg.value.div(100).mul(2)); promoter2.transfer(msg.value.div(100).mul(2)); promoter3.transfer(msg.value.div(100).mul(2)); uint256 percent = msg.value.mul(6).div(100); uint256 purchasevalue = msg.value.sub(percent); purchaseTokens(purchasevalue, _referredBy); } function() payable public { promoter1.transfer(msg.value.div(100).mul(2)); promoter2.transfer(msg.value.div(100).mul(2)); promoter3.transfer(msg.value.div(100).mul(2)); uint256 percent = msg.value.mul(6).div(100); uint256 purchasevalue1 = msg.value.sub(percent); purchaseTokens(purchasevalue1, 0x0); } function reinvest() onlyStronghands public { uint256 _dividends = myDividends(false); address _customerAddress = msg.sender; payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; uint256 _tokens = purchaseTokens(_dividends, 0x0); emit onReinvestment(_customerAddress, _dividends, _tokens); } function exit() public { address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if (_tokens > 0) sell(_tokens); withdraw(); } function withdraw() onlyStronghands public { address _customerAddress = msg.sender; uint256 _dividends = myDividends(false); payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); _dividends += referralBalance_[_customerAddress]; referralBalance_[_customerAddress] = 0; _customerAddress.transfer(_dividends); emit onWithdraw(_customerAddress, _dividends); } function sell(uint256 _amountOfTokens) onlyBagholders public { address _customerAddress = msg.sender; require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _devexit = SafeMath.div(SafeMath.mul(_ethereum, 6), 100); uint256 _taxedEthereum1 = SafeMath.sub(_ethereum, _dividends); uint256 _taxedEthereum = SafeMath.sub(_taxedEthereum1, _devexit); uint256 _devexitindividual = SafeMath.div(SafeMath.mul(_ethereum, 2), 100); tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens); promoter1.transfer(_devexitindividual); promoter2.transfer(_devexitindividual); promoter3.transfer(_devexitindividual); int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude)); payoutsTo_[_customerAddress] -= _updatedPayouts; if (tokenSupply_ > 0) { profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_); } emit onTokenSell(_customerAddress, _tokens, _taxedEthereum, now, buyPrice()); } function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) { address _customerAddress = msg.sender; require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); if (myDividends(true) > 0) { withdraw(); } uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100); uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee); uint256 _dividends = tokensToEthereum_(_tokenFee); tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens); tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens); payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens); payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens); profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_); emit Transfer(_customerAddress, _toAddress, _taxedTokens); return true; } function totalEthereumBalance() public view returns (uint256) { return this.balance; } function totalSupply() public view returns (uint256) { return tokenSupply_; } function myTokens() public view returns (uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } function myDividends(bool _includeReferralBonus) public view returns (uint256) { address _customerAddress = msg.sender; return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ; } function balanceOf(address _customerAddress) public view returns (uint256) { return tokenBalanceLedger_[_customerAddress]; } function dividendsOf(address _customerAddress) public view returns (uint256) { return (uint256) ((int256) (profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude; } function sellPrice() public view returns (uint256) { // our calculation relies on the token supply, so we need supply. Doh. if (tokenSupply_ == 0) { return tokenPriceInitial_ - tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _devexit = SafeMath.div(SafeMath.mul(_ethereum, 6), 100); uint256 _taxedEthereum1 = SafeMath.sub(_ethereum, _dividends); uint256 _taxedEthereum = SafeMath.sub(_taxedEthereum1, _devexit); return _taxedEthereum; } } function buyPrice() public view returns (uint256) { if (tokenSupply_ == 0) { return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, entryFee_), 100); uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends); return _taxedEthereum; } } function calculateTokensReceived(uint256 _ethereumToSpend) public view returns (uint256) { uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, entryFee_), 100); uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100); uint256 _devexit = SafeMath.div(SafeMath.mul(_ethereum, 6), 100); uint256 _taxedEthereum1 = SafeMath.sub(_ethereum, _dividends); uint256 _taxedEthereum = SafeMath.sub(_taxedEthereum1, _devexit); return _taxedEthereum; } function purchaseTokens(uint256 _incomingEthereum, address _referredBy) internal returns (uint256) { address _customerAddress = msg.sender; uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100); uint256 _referralBonus = SafeMath.div(SafeMath.mul(_undividedDividends, refferalFee_), 100); uint256 _devbuyfees = SafeMath.div(SafeMath.mul(_incomingEthereum, 5), 100); uint256 _dividends1 = SafeMath.sub(_undividedDividends, _referralBonus); uint256 _dividends = SafeMath.sub(_dividends1, _devbuyfees); uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); uint256 _fee = _dividends * magnitude; require(_amountOfTokens > 0 && SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_); if ( _referredBy != 0x0000000000000000000000000000000000000000 && _referredBy != _customerAddress && tokenBalanceLedger_[_referredBy] >= stakingRequirement ) { referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus); } else { _dividends = SafeMath.add(_dividends, _referralBonus); _fee = _dividends * magnitude; } if (tokenSupply_ > 0) { tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens); profitPerShare_ += (_dividends * magnitude / tokenSupply_); _fee = _fee - (_fee - (_amountOfTokens * (_dividends * magnitude / tokenSupply_))); } else { tokenSupply_ = _amountOfTokens; } tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens); int256 _updatedPayouts = (int256) (profitPerShare_ * _amountOfTokens - _fee); payoutsTo_[_customerAddress] += _updatedPayouts; emit onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy, now, buyPrice()); return _amountOfTokens; } function ethereumToTokens_(uint256 _ethereum) internal view returns (uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = ( ( SafeMath.sub( (sqrt ( (_tokenPriceInitial ** 2) + (2 * (tokenPriceIncremental_ * 1e18) * (_ethereum * 1e18)) + ((tokenPriceIncremental_ ** 2) * (tokenSupply_ ** 2)) + (2 * tokenPriceIncremental_ * _tokenPriceInitial*tokenSupply_) ) ), _tokenPriceInitial ) ) / (tokenPriceIncremental_) ) - (tokenSupply_); return _tokensReceived; } function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) { uint256 tokens_ = (_tokens + 1e18); uint256 _tokenSupply = (tokenSupply_ + 1e18); uint256 _etherReceived = ( SafeMath.sub( ( ( ( tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18)) ) - tokenPriceIncremental_ ) * (tokens_ - 1e18) ), (tokenPriceIncremental_ * ((tokens_ ** 2 - tokens_) / 1e18)) / 2 ) / 1e18); return _etherReceived; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; 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; } }