Sponsored Link:   WELL – WORKING HEALTHCARE U.S. PLATFORM - RAISED $3M IN PRE-ICO – JOIN NOW WITH 40% BONUS
Contract Overview
ETH Balance: 0.841240383286809894 Ether
ETH USD Value: $679.75 (@ $808.03/ETH)
No Of Transactions: 575 txns
  Latest 25 txns from a total Of 575 transactions View All

TxHash Age From To Value [TxFee]
0xd937c2a4d4825994d067c90c880fc46905a6ba0030a42f46b9a3d54acfed23e120 hrs 11 mins ago0x894bcd33b13c2c521913b634d92efa01d7b32970  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50.015 Ether0.000178362
0x884557da0d7b289a9cd61f48cb36fde273b46eea2f753cc5b61851d9a04a72201 day 14 hrs ago0xe3093bdd60f3914ea1bc6236dd5e2d39d87f3fa5  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0xd28bacd975f6c0b16443f021600a0dfc359104cbfd06d8a4cc5da4fbffcc6ada2 days 18 hrs ago0xe12c8d452983d5d26a7f1d3ce2b1dd1ce1fa91f3  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000551124
0xd86a196b197508167a5645cd7253a6fbb6e8d776334720523d95cc6a6db31ae14 days 9 hrs ago0xac3d5c78085283905bb34254e782543a7ed1ae05  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000091854
0x420b6b117dbf7150d82b7339ea6d340dd351196db6ce301d9f43e4800ab07a184 days 9 hrs ago0xac3d5c78085283905bb34254e782543a7ed1ae05  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000038153
0xf872f0ca3b79f568aa4b1a731d4335438e348b1fff23e30e1ec5f10a3eee57784 days 18 hrs ago0x7b28b8740850fb979fc68448195e016a8261338c  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0x2f3e830ac38a6b848b236d5f2e63291d9e5d9dbe4c9acf082a21b3ae3f5ac5014 days 18 hrs ago0x709469858a3c01fa7beda675e8abb340dce503e8  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000091854
0x7710a7e2d7c8701115a0c45486a51ed1ea19fa8c73bfe08e3ba5ab5ba33c30624 days 19 hrs ago0x709469858a3c01fa7beda675e8abb340dce503e8  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000038153
0x2c0a4ce8e69e4fd7f2fef1a85091baaead38422bb321a5e33f31f35a3f5344d34 days 19 hrs ago0x709469858a3c01fa7beda675e8abb340dce503e8  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000065441
0xaf36c55d45f75efa25e4aa9d242df9b4a543985f6cedb525212be778f56f0a025 days 12 hrs ago0x53e1a67f7172b2270c051719f887b8fdc683f2de  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0x672a51441646c5b0e5934547a78289143064d18a8287c88f7d848efa42e15ab35 days 17 hrs ago0x845636c588f5789c93a006e07cf572cfe835bfea  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000062555
0x7de75c3dc1c48d789a0ba364249e0efe38eecef2a82242bd18611e0d2fea318f5 days 17 hrs ago0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000183708
0x81353fd5e5f6b9d422616f167b6d73641a69d2dac84651922f4734688961d13d5 days 17 hrs ago0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000152612
0x2e4cebf69462bc99848cf11b97ff9f49beceda44c33b606e95a9534e4f351a6f5 days 20 hrs ago0x1435657ef3fab712c1fab0b22ba0fda9aabacaf1  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000062555
0xfeabf6cd7af86ea1e1fe5dfa5418f13cfca4a89bdfac18f9514b99143f156e226 days 1 hr ago0xac3d5c78085283905bb34254e782543a7ed1ae05  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000065441
0x9658e1c8ba081ba12a40882a5a3424d34cc09de031a3d736b3a86db1cc71f8ba6 days 21 hrs ago0x2f954992207a988d78a7b14f8f1d17fc1d568b9d  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0x49decea08f7e58b3f416fb1d65fff289874f574508d4407b0a92163c3fb97efd6 days 21 hrs ago0x291f1f72f39ef1beb571baf842d24c9fd3fbb4ee  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000091854
0x243fd3c76736884402f0d2b2b7a39a95da1322eea03a4e734dfe90dcbdde2d937 days 1 hr ago0x291f1f72f39ef1beb571baf842d24c9fd3fbb4ee  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000038153
0x149fc9e3b5bfb555185e9cb585eca761d46b6b04645a94faa5456cb8cbdf82947 days 6 hrs ago0xcf085b8dc7c5acee93df07dbe6fa4abfc4b46b21  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000065441
0xa6b25d95ecf2da57d02cc2701c96d2271a8b88fa3f7fe745767f714586aa6dd87 days 19 hrs ago0x05edda6465dc74a48c0c338145f48f81c7164d93  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000091854
0xb307ed20434af2227365eb374fd50269f0a7235da3393afd64efd4b081ab375c8 days 7 hrs ago0x291f1f72f39ef1beb571baf842d24c9fd3fbb4ee  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.0001
0xec5e26991a156a2d36deb1d553f9082b899ec044a831d12ea48006b7533ea6fb9 days 18 hrs ago0x8c4763150e4b522ab50d1a51773557c9c8fe3950  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0x02520165f60d2911aee2dad377035dcfd8916bad8959cf19dab4f1684bf6a40510 days 12 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000045927
0x718a6ed9bc0618990f963c77ac1cc4f0434350265a4efaf4ea11e6cc4e86524210 days 13 hrs ago0xd325e5e246236cd1c767a91168f96a08fc020031  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.0001374261
0xa27a2a101d851ee55fe6eeb0d2533d6c37acf79579c2955f54dd48f111a703d910 days 18 hrs ago0x391a3ea52c4a9f04be6900c3fd057dd9676c72e1  IN   0xce3632ecb106ec5f2cbfb49c89a118058737b5a50 Ether0.000065441
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x884557da0d7b289a9cd61f48cb36fde273b46eea2f753cc5b61851d9a04a722051268131 day 14 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xe3093bdd60f3914ea1bc6236dd5e2d39d87f3fa50.002183104680180097 Ether
0xd28bacd975f6c0b16443f021600a0dfc359104cbfd06d8a4cc5da4fbffcc6ada51200592 days 18 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xe12c8d452983d5d26a7f1d3ce2b1dd1ce1fa91f30.096721337820902155 Ether
0xd86a196b197508167a5645cd7253a6fbb6e8d776334720523d95cc6a6db31ae151105044 days 9 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xac3d5c78085283905bb34254e782543a7ed1ae050.006465762516167849 Ether
0xf872f0ca3b79f568aa4b1a731d4335438e348b1fff23e30e1ec5f10a3eee577851081644 days 18 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x7b28b8740850fb979fc68448195e016a8261338c0.008149932452524842 Ether
0x2f3e830ac38a6b848b236d5f2e63291d9e5d9dbe4c9acf082a21b3ae3f5ac50151080694 days 18 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x709469858a3c01fa7beda675e8abb340dce503e80.01742067108488395 Ether
0xaf36c55d45f75efa25e4aa9d242df9b4a543985f6cedb525212be778f56f0a0251036875 days 12 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x53e1a67f7172b2270c051719f887b8fdc683f2de0.007390410778152438 Ether
0x672a51441646c5b0e5934547a78289143064d18a8287c88f7d848efa42e15ab351025005 days 17 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x845636c588f5789c93a006e07cf572cfe835bfea0.005595670159045393 Ether
0x7de75c3dc1c48d789a0ba364249e0efe38eecef2a82242bd18611e0d2fea318f51023235 days 17 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xef764bac8a438e7e498c2e5fccf0f174c3e3f8db0.221295530308559651 Ether
0x2e4cebf69462bc99848cf11b97ff9f49beceda44c33b606e95a9534e4f351a6f51016955 days 20 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x1435657ef3fab712c1fab0b22ba0fda9aabacaf10.003109555067702283 Ether
0x9658e1c8ba081ba12a40882a5a3424d34cc09de031a3d736b3a86db1cc71f8ba50955446 days 21 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x2f954992207a988d78a7b14f8f1d17fc1d568b9d0.000774865575295663 Ether
0x49decea08f7e58b3f416fb1d65fff289874f574508d4407b0a92163c3fb97efd50953646 days 21 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x291f1f72f39ef1beb571baf842d24c9fd3fbb4ee0.001581882411659016 Ether
0xa6b25d95ecf2da57d02cc2701c96d2271a8b88fa3f7fe745767f714586aa6dd850899707 days 19 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x05edda6465dc74a48c0c338145f48f81c7164d930.029819080978844294 Ether
0xec5e26991a156a2d36deb1d553f9082b899ec044a831d12ea48006b7533ea6fb50783029 days 18 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x8c4763150e4b522ab50d1a51773557c9c8fe39500.656177336367380446 Ether
0x02520165f60d2911aee2dad377035dcfd8916bad8959cf19dab4f1684bf6a405507387710 days 12 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xaec539a116fa75e8bdcf016d3c146a25bc1af93b0.020361086392380657 Ether
0x53f17e7c9ba1f3818ba55043736bd4fda3eccf3023c1c42a6eba1de9e0ccfa19507120810 days 23 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x415e94a5246ac4d3f16a833f51ff9066f215a4210.000312008743541662 Ether
0xdfd6a85adecc22001317da831682b032756fb46041b8e34546b274a66e64af3a506932011 days 7 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x5e79ec5eb679cea45be3392381f4637fe1eb6e620.000202502707890472 Ether
0xd5b378716e38ae53065864108e5236a5aac7ed2da5b6aa1bf2e00cd33b634d62506862211 days 9 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x5e79ec5eb679cea45be3392381f4637fe1eb6e620.000126022218081006 Ether
0xcea0727462effca58431d6ead71ff6107dd1e41cf1e9cac9b4a3108e301e0352506684511 days 17 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x66c25415ff086244b2c9119c4a15d7e150bd42480.000616569646375356 Ether
0x33764d46ed29ecf290430c57901b4eb864b5784bf3c935d278edc0a94b860a43506398012 days 4 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xb5edbe87bd5cb8ab9ff7a992ca91671d2fd5716f0.033336083916783445 Ether
0xc792794d819330912cdcb7879f9202faa759d4bdef95eb73a0cbeb49a82c2d82506396312 days 4 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x004a1f4e7046533b41edc9609dd8e8e7ab74101e0.047922288777087901 Ether
0x16b2670a6c806b4609eb81c6ec384d0f3059f30ffdb09c9d09d38d19f7ded691506369212 days 5 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xf38ecbec6b5bf1469d149a8e04a7d2ad6b97ef050.055811462967494684 Ether
0xed25b23025374034cf2c7bf57c58ad1153e0b2ad2e9c56d5649501adff054e51506137412 days 14 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50xf0a1003ec54bd889ba3cf22fe0179a32f51affd80.448125798561619258 Ether
0x3c0bc3897fd94ff906519e0e96d6634781b4f86d94ac41556391a0bd93a80039506128212 days 15 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x8b889c41a23865923d5126cd054cd9d057d5e3f80.039014699008337002 Ether
0xa0b77a283e7b52f4381d05801a50e6057af6ac47fc147d5fc45b23db8cd9f7e6506094212 days 16 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x4dbd161ab0455505b0f80e27b4be96302ccfd54b0.038788030096002208 Ether
0x0aaeb34f553b13198a064574644cb62a9a706dd761f81d64eba4cd0d4d4bedd3506070212 days 17 hrs ago0xce3632ecb106ec5f2cbfb49c89a118058737b5a50x95cb6c11ca8f8cf711d06dc05e9f5eb2da7e8caf0.000534100409581409 Ether
[ Download CSV Export  ] 
Contract Source Code Verified
Note: Displaying matching verified source code at contract 0xc908a34165d2720d12ffcfb6b99b47161b1c9946
Contract Name: EthPyramid
Compiler Version: v0.4.20-nightly.2018.1.29+commit.a668b9de
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.18;

/*
          ,/`.
        ,'/ __`.
      ,'_/_  _ _`.
    ,'__/_ ___ _  `.
  ,'_  /___ __ _ __ `.
 '-.._/___...-"-.-..__`.
  B

 EthPyramid. A no-bullshit, transparent, self-sustaining pyramid scheme.
 
 Inspired by https://test.jochen-hoenicke.de/eth/ponzitoken/

 Developers:
	Arc
	Divine
	Norsefire
	ToCsIcK
	
 Front-End:
	Cardioth
	tenmei
	Trendium
	
 Moral Support:
	DeadCow.Rat
	Dots
	FatKreamy
	Kaseylol
	QuantumDeath666
	Quentin
 
 Shit-Tier:
	HentaiChrist
 
*/

contract EthPyramid {

	// scaleFactor is used to convert Ether into tokens and vice-versa: they're of different
	// orders of magnitude, hence the need to bridge between the two.
	uint256 constant scaleFactor = 0x10000000000000000;  // 2^64

	// CRR = 50%
	// CRR is Cash Reserve Ratio (in this case Crypto Reserve Ratio).
	// For more on this: check out https://en.wikipedia.org/wiki/Reserve_requirement
	int constant crr_n = 1; // CRR numerator
	int constant crr_d = 2; // CRR denominator

	// The price coefficient. Chosen such that at 1 token total supply
	// the amount in reserve is 0.5 ether and token price is 1 Ether.
	int constant price_coeff = -0x296ABF784A358468C;

	// Typical values that we have to declare.
	string constant public name = "EthPyramid";
	string constant public symbol = "EPY";
	uint8 constant public decimals = 18;

	// Array between each address and their number of tokens.
	mapping(address => uint256) public tokenBalance;
		
	// Array between each address and how much Ether has been paid out to it.
	// Note that this is scaled by the scaleFactor variable.
	mapping(address => int256) public payouts;

	// Variable tracking how many tokens are in existence overall.
	uint256 public totalSupply;

	// Aggregate sum of all payouts.
	// Note that this is scaled by the scaleFactor variable.
	int256 totalPayouts;

	// Variable tracking how much Ether each token is currently worth.
	// Note that this is scaled by the scaleFactor variable.
	uint256 earningsPerToken;
	
	// Current contract balance in Ether
	uint256 public contractBalance;

	function EthPyramid() public {}

	// The following functions are used by the front-end for display purposes.

	// Returns the number of tokens currently held by _owner.
	function balanceOf(address _owner) public constant returns (uint256 balance) {
		return tokenBalance[_owner];
	}

	// Withdraws all dividends held by the caller sending the transaction, updates
	// the requisite global variables, and transfers Ether back to the caller.
	function withdraw() public {
		// Retrieve the dividends associated with the address the request came from.
		var balance = dividends(msg.sender);
		
		// Update the payouts array, incrementing the request address by `balance`.
		payouts[msg.sender] += (int256) (balance * scaleFactor);
		
		// Increase the total amount that's been paid out to maintain invariance.
		totalPayouts += (int256) (balance * scaleFactor);
		
		// Send the dividends to the address that requested the withdraw.
		contractBalance = sub(contractBalance, balance);
		msg.sender.transfer(balance);
	}

	// Converts the Ether accrued as dividends back into EPY tokens without having to
	// withdraw it first. Saves on gas and potential price spike loss.
	function reinvestDividends() public {
		// Retrieve the dividends associated with the address the request came from.
		var balance = dividends(msg.sender);
		
		// Update the payouts array, incrementing the request address by `balance`.
		// Since this is essentially a shortcut to withdrawing and reinvesting, this step still holds.
		payouts[msg.sender] += (int256) (balance * scaleFactor);
		
		// Increase the total amount that's been paid out to maintain invariance.
		totalPayouts += (int256) (balance * scaleFactor);
		
		// Assign balance to a new variable.
		uint value_ = (uint) (balance);
		
		// If your dividends are worth less than 1 szabo, or more than a million Ether
		// (in which case, why are you even here), abort.
		if (value_ < 0.000001 ether || value_ > 1000000 ether)
			revert();
			
		// msg.sender is the address of the caller.
		var sender = msg.sender;
		
		// A temporary reserve variable used for calculating the reward the holder gets for buying tokens.
		// (Yes, the buyer receives a part of the distribution as well!)
		var res = reserve() - balance;

		// 10% of the total Ether sent is used to pay existing holders.
		var fee = div(value_, 10);
		
		// The amount of Ether used to purchase new tokens for the caller.
		var numEther = value_ - fee;
		
		// The number of tokens which can be purchased for numEther.
		var numTokens = calculateDividendTokens(numEther, balance);
		
		// The buyer fee, scaled by the scaleFactor variable.
		var buyerFee = fee * scaleFactor;
		
		// Check that we have tokens in existence (this should always be true), or
		// else you're gonna have a bad time.
		if (totalSupply > 0) {
			// Compute the bonus co-efficient for all existing holders and the buyer.
			// The buyer receives part of the distribution for each token bought in the
			// same way they would have if they bought each token individually.
			var bonusCoEff =
			    (scaleFactor - (res + numEther) * numTokens * scaleFactor / (totalSupply + numTokens) / numEther)
			    * (uint)(crr_d) / (uint)(crr_d-crr_n);
				
			// The total reward to be distributed amongst the masses is the fee (in Ether)
			// multiplied by the bonus co-efficient.
			var holderReward = fee * bonusCoEff;
			
			buyerFee -= holderReward;

			// Fee is distributed to all existing token holders before the new tokens are purchased.
			// rewardPerShare is the amount gained per token thanks to this buy-in.
			var rewardPerShare = holderReward / totalSupply;
			
			// The Ether value per token is increased proportionally.
			earningsPerToken += rewardPerShare;
		}
		
		// Add the numTokens which were just created to the total supply. We're a crypto central bank!
		totalSupply = add(totalSupply, numTokens);
		
		// Assign the tokens to the balance of the buyer.
		tokenBalance[sender] = add(tokenBalance[sender], numTokens);
		
		// Update the payout array so that the buyer cannot claim dividends on previous purchases.
		// Also include the fee paid for entering the scheme.
		// First we compute how much was just paid out to the buyer...
		var payoutDiff  = (int256) ((earningsPerToken * numTokens) - buyerFee);
		
		// Then we update the payouts array for the buyer with this amount...
		payouts[sender] += payoutDiff;
		
		// And then we finally add it to the variable tracking the total amount spent to maintain invariance.
		totalPayouts    += payoutDiff;
		
	}

	// Sells your tokens for Ether. This Ether is assigned to the callers entry
	// in the tokenBalance array, and therefore is shown as a dividend. A second
	// call to withdraw() must be made to invoke the transfer of Ether back to your address.
	function sellMyTokens() public {
		var balance = balanceOf(msg.sender);
		sell(balance);
	}

	// The slam-the-button escape hatch. Sells the callers tokens for Ether, then immediately
	// invokes the withdraw() function, sending the resulting Ether to the callers address.
    function getMeOutOfHere() public {
		sellMyTokens();
        withdraw();
	}

	// Gatekeeper function to check if the amount of Ether being sent isn't either
	// too small or too large. If it passes, goes direct to buy().
	function fund() payable public {
		// Don't allow for funding if the amount of Ether sent is less than 1 szabo.
		if (msg.value > 0.000001 ether) {
		    contractBalance = add(contractBalance, msg.value);
			buy();
		} else {
			revert();
		}
    }

	// Function that returns the (dynamic) price of buying a finney worth of tokens.
	function buyPrice() public constant returns (uint) {
		return getTokensForEther(1 finney);
	}

	// Function that returns the (dynamic) price of selling a single token.
	function sellPrice() public constant returns (uint) {
        var eth = getEtherForTokens(1 finney);
        var fee = div(eth, 10);
        return eth - fee;
    }

	// Calculate the current dividends associated with the caller address. This is the net result
	// of multiplying the number of tokens held by their current value in Ether and subtracting the
	// Ether that has already been paid out.
	function dividends(address _owner) public constant returns (uint256 amount) {
		return (uint256) ((int256)(earningsPerToken * tokenBalance[_owner]) - payouts[_owner]) / scaleFactor;
	}

	// Version of withdraw that extracts the dividends and sends the Ether to the caller.
	// This is only used in the case when there is no transaction data, and that should be
	// quite rare unless interacting directly with the smart contract.
	function withdrawOld(address to) public {
		// Retrieve the dividends associated with the address the request came from.
		var balance = dividends(msg.sender);
		
		// Update the payouts array, incrementing the request address by `balance`.
		payouts[msg.sender] += (int256) (balance * scaleFactor);
		
		// Increase the total amount that's been paid out to maintain invariance.
		totalPayouts += (int256) (balance * scaleFactor);
		
		// Send the dividends to the address that requested the withdraw.
		contractBalance = sub(contractBalance, balance);
		to.transfer(balance);		
	}

	// Internal balance function, used to calculate the dynamic reserve value.
	function balance() internal constant returns (uint256 amount) {
		// msg.value is the amount of Ether sent by the transaction.
		return contractBalance - msg.value;
	}

	function buy() internal {
		// Any transaction of less than 1 szabo is likely to be worth less than the gas used to send it.
		if (msg.value < 0.000001 ether || msg.value > 1000000 ether)
			revert();
						
		// msg.sender is the address of the caller.
		var sender = msg.sender;
		
		// 10% of the total Ether sent is used to pay existing holders.
		var fee = div(msg.value, 10);
		
		// The amount of Ether used to purchase new tokens for the caller.
		var numEther = msg.value - fee;
		
		// The number of tokens which can be purchased for numEther.
		var numTokens = getTokensForEther(numEther);
		
		// The buyer fee, scaled by the scaleFactor variable.
		var buyerFee = fee * scaleFactor;
		
		// Check that we have tokens in existence (this should always be true), or
		// else you're gonna have a bad time.
		if (totalSupply > 0) {
			// Compute the bonus co-efficient for all existing holders and the buyer.
			// The buyer receives part of the distribution for each token bought in the
			// same way they would have if they bought each token individually.
			var bonusCoEff =
			    (scaleFactor - (reserve() + numEther) * numTokens * scaleFactor / (totalSupply + numTokens) / numEther)
			    * (uint)(crr_d) / (uint)(crr_d-crr_n);
				
			// The total reward to be distributed amongst the masses is the fee (in Ether)
			// multiplied by the bonus co-efficient.
			var holderReward = fee * bonusCoEff;
			
			buyerFee -= holderReward;

			// Fee is distributed to all existing token holders before the new tokens are purchased.
			// rewardPerShare is the amount gained per token thanks to this buy-in.
			var rewardPerShare = holderReward / totalSupply;
			
			// The Ether value per token is increased proportionally.
			earningsPerToken += rewardPerShare;
			
		}

		// Add the numTokens which were just created to the total supply. We're a crypto central bank!
		totalSupply = add(totalSupply, numTokens);

		// Assign the tokens to the balance of the buyer.
		tokenBalance[sender] = add(tokenBalance[sender], numTokens);

		// Update the payout array so that the buyer cannot claim dividends on previous purchases.
		// Also include the fee paid for entering the scheme.
		// First we compute how much was just paid out to the buyer...
		var payoutDiff = (int256) ((earningsPerToken * numTokens) - buyerFee);
		
		// Then we update the payouts array for the buyer with this amount...
		payouts[sender] += payoutDiff;
		
		// And then we finally add it to the variable tracking the total amount spent to maintain invariance.
		totalPayouts    += payoutDiff;
		
	}

	// Sell function that takes tokens and converts them into Ether. Also comes with a 10% fee
	// to discouraging dumping, and means that if someone near the top sells, the fee distributed
	// will be *significant*.
	function sell(uint256 amount) internal {
	    // Calculate the amount of Ether that the holders tokens sell for at the current sell price.
		var numEthersBeforeFee = getEtherForTokens(amount);
		
		// 10% of the resulting Ether is used to pay remaining holders.
        var fee = div(numEthersBeforeFee, 10);
		
		// Net Ether for the seller after the fee has been subtracted.
        var numEthers = numEthersBeforeFee - fee;
		
		// *Remove* the numTokens which were just sold from the total supply. We're /definitely/ a crypto central bank.
		totalSupply = sub(totalSupply, amount);
		
        // Remove the tokens from the balance of the buyer.
		tokenBalance[msg.sender] = sub(tokenBalance[msg.sender], amount);

        // Update the payout array so that the seller cannot claim future dividends unless they buy back in.
		// First we compute how much was just paid out to the seller...
		var payoutDiff = (int256) (earningsPerToken * amount + (numEthers * scaleFactor));
		
        // We reduce the amount paid out to the seller (this effectively resets their payouts value to zero,
		// since they're selling all of their tokens). This makes sure the seller isn't disadvantaged if
		// they decide to buy back in.
		payouts[msg.sender] -= payoutDiff;		
		
		// Decrease the total amount that's been paid out to maintain invariance.
        totalPayouts -= payoutDiff;
		
		// Check that we have tokens in existence (this is a bit of an irrelevant check since we're
		// selling tokens, but it guards against division by zero).
		if (totalSupply > 0) {
			// Scale the Ether taken as the selling fee by the scaleFactor variable.
			var etherFee = fee * scaleFactor;
			
			// Fee is distributed to all remaining token holders.
			// rewardPerShare is the amount gained per token thanks to this sell.
			var rewardPerShare = etherFee / totalSupply;
			
			// The Ether value per token is increased proportionally.
			earningsPerToken = add(earningsPerToken, rewardPerShare);
		}
	}
	
	// Dynamic value of Ether in reserve, according to the CRR requirement.
	function reserve() internal constant returns (uint256 amount) {
		return sub(balance(),
			 ((uint256) ((int256) (earningsPerToken * totalSupply) - totalPayouts) / scaleFactor));
	}

	// Calculates the number of tokens that can be bought for a given amount of Ether, according to the
	// dynamic reserve and totalSupply values (derived from the buy and sell prices).
	function getTokensForEther(uint256 ethervalue) public constant returns (uint256 tokens) {
		return sub(fixedExp(fixedLog(reserve() + ethervalue)*crr_n/crr_d + price_coeff), totalSupply);
	}

	// Semantically similar to getTokensForEther, but subtracts the callers balance from the amount of Ether returned for conversion.
	function calculateDividendTokens(uint256 ethervalue, uint256 subvalue) public constant returns (uint256 tokens) {
		return sub(fixedExp(fixedLog(reserve() - subvalue + ethervalue)*crr_n/crr_d + price_coeff), totalSupply);
	}

	// Converts a number tokens into an Ether value.
	function getEtherForTokens(uint256 tokens) public constant returns (uint256 ethervalue) {
		// How much reserve Ether do we have left in the contract?
		var reserveAmount = reserve();

		// If you're the Highlander (or bagholder), you get The Prize. Everything left in the vault.
		if (tokens == totalSupply)
			return reserveAmount;

		// If there would be excess Ether left after the transaction this is called within, return the Ether
		// corresponding to the equation in Dr Jochen Hoenicke's original Ponzi paper, which can be found
		// at https://test.jochen-hoenicke.de/eth/ponzitoken/ in the third equation, with the CRR numerator 
		// and denominator altered to 1 and 2 respectively.
		return sub(reserveAmount, fixedExp((fixedLog(totalSupply - tokens) - price_coeff) * crr_d/crr_n));
	}

	// You don't care about these, but if you really do they're hex values for 
	// co-efficients used to simulate approximations of the log and exp functions.
	int256  constant one        = 0x10000000000000000;
	uint256 constant sqrt2      = 0x16a09e667f3bcc908;
	uint256 constant sqrtdot5   = 0x0b504f333f9de6484;
	int256  constant ln2        = 0x0b17217f7d1cf79ac;
	int256  constant ln2_64dot5 = 0x2cb53f09f05cc627c8;
	int256  constant c1         = 0x1ffffffffff9dac9b;
	int256  constant c3         = 0x0aaaaaaac16877908;
	int256  constant c5         = 0x0666664e5e9fa0c99;
	int256  constant c7         = 0x049254026a7630acf;
	int256  constant c9         = 0x038bd75ed37753d68;
	int256  constant c11        = 0x03284a0c14610924f;

	// The polynomial R = c1*x + c3*x^3 + ... + c11 * x^11
	// approximates the function log(1+x)-log(1-x)
	// Hence R(s) = log((1+s)/(1-s)) = log(a)
	function fixedLog(uint256 a) internal pure returns (int256 log) {
		int32 scale = 0;
		while (a > sqrt2) {
			a /= 2;
			scale++;
		}
		while (a <= sqrtdot5) {
			a *= 2;
			scale--;
		}
		int256 s = (((int256)(a) - one) * one) / ((int256)(a) + one);
		var z = (s*s) / one;
		return scale * ln2 +
			(s*(c1 + (z*(c3 + (z*(c5 + (z*(c7 + (z*(c9 + (z*c11/one))
				/one))/one))/one))/one))/one);
	}

	int256 constant c2 =  0x02aaaaaaaaa015db0;
	int256 constant c4 = -0x000b60b60808399d1;
	int256 constant c6 =  0x0000455956bccdd06;
	int256 constant c8 = -0x000001b893ad04b3a;
	
	// The polynomial R = 2 + c2*x^2 + c4*x^4 + ...
	// approximates the function x*(exp(x)+1)/(exp(x)-1)
	// Hence exp(x) = (R(x)+x)/(R(x)-x)
	function fixedExp(int256 a) internal pure returns (uint256 exp) {
		int256 scale = (a + (ln2_64dot5)) / ln2 - 64;
		a -= scale*ln2;
		int256 z = (a*a) / one;
		int256 R = ((int256)(2) * one) +
			(z*(c2 + (z*(c4 + (z*(c6 + (z*c8/one))/one))/one))/one);
		exp = (uint256) (((R + a) * one) / (R - a));
		if (scale >= 0)
			exp <<= scale;
		else
			exp >>= -scale;
		return exp;
	}
	
	// The below are safemath implementations of the four arithmetic operators
	// designed to explicitly prevent over- and under-flows of integer values.

	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) {
		// 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;
	}

	// This allows you to buy tokens by sending Ether directly to the smart contract
	// without including any transaction data (useful for, say, mobile wallet apps).
	function () payable public {
		// msg.value is the amount of Ether sent by the transaction.
		if (msg.value > 0) {
			fund();
		} else {
			withdrawOld(msg.sender);
		}
	}
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"withdrawOld","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethervalue","type":"uint256"}],"name":"getTokensForEther","outputs":[{"name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payouts","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"dividends","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reinvestDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getMeOutOfHere","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"fund","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"}],"name":"getEtherForTokens","outputs":[{"name":"ethervalue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ethervalue","type":"uint256"},{"name":"subvalue","type":"uint256"}],"name":"calculateDividendTokens","outputs":[{"name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sellMyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b610d1a8061001e6000396000f3006060604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461013257806318160ddd146101bc578063313ce567146101e157806339ffe67c1461020a5780633ccfd60b146102295780634b7503341461023c57806362dbf2611461024f57806365bcfbe71461026557806368306e431461028457806370a08231146102a35780638620410b146102c25780638b7afe2e146102d5578063957b2e56146102e857806395d89b41146102fb578063b1e352421461030e578063b60d428814610321578063b9f308f214610329578063bda5c4501461033f578063e555c1a314610358578063eedc966a1461036b575b60003411156101275761012261038a565b610130565b610130336103ba565b005b341561013d57600080fd5b61014561043d565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610181578082015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101c757600080fd5b6101cf610474565b60405190815260200160405180910390f35b34156101ec57600080fd5b6101f461047a565b60405160ff909116815260200160405180910390f35b341561021557600080fd5b610130600160a060020a03600435166103ba565b341561023457600080fd5b61013061047f565b341561024757600080fd5b6101cf610501565b341561025a57600080fd5b6101cf60043561052c565b341561027057600080fd5b6101cf600160a060020a0360043516610574565b341561028f57600080fd5b6101cf600160a060020a0360043516610586565b34156102ae57600080fd5b6101cf600160a060020a03600435166105bb565b34156102cd57600080fd5b6101cf6105d6565b34156102e057600080fd5b6101cf6105ed565b34156102f357600080fd5b6101306105f3565b341561030657600080fd5b610145610790565b341561031957600080fd5b6101306107c7565b61013061038a565b341561033457600080fd5b6101cf6004356107d7565b341561034a57600080fd5b6101cf600435602435610838565b341561036357600080fd5b61013061086a565b341561037657600080fd5b6101cf600160a060020a0360043516610880565b64e8d4a510003411156103b3576103a360055434610892565b6005556103ae6108a1565b6103b8565b600080fd5b565b60006103c533610586565b600160a060020a03331660009081526001602052604090208054604060020a830290810190915560038054909101905560055490915061040590826109f3565b600555600160a060020a03821681156108fc0282604051600060405180830381858888f19350505050151561043957600080fd5b5050565b60408051908101604052600a81527f457468507972616d696400000000000000000000000000000000000000000000602082015281565b60025481565b601281565b600061048a33610586565b600160a060020a03331660009081526001602052604090208054604060020a83029081019091556003805490910190556005549091506104ca90826109f3565b600555600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156104fe57600080fd5b50565b600080600061051666038d7ea4c680006107d7565b915061052382600a610a05565b90910392915050565b600061056e610566680296abf784a358468b19600260016105558761054f610a1c565b01610a41565b0281151561055f57fe5b0501610b26565b6002546109f3565b92915050565b60016020526000908152604090205481565b600160a060020a03166000908152600160209081526040808320549183905290912054600454604060020a9102919091030490565b600160a060020a031660009081526020819052604090205490565b60006105e866038d7ea4c6800061052c565b905090565b60055481565b60008060008060008060008060008060008061060e33610586565b600160a060020a03331660009081526001602052604090208054604060020a83029081019091556003805490910190559b508b9a5064e8d4a510008b108061065f575069d3c21bcecceda10000008b115b1561066957600080fd5b3399508b610675610a1c565b0398506106838b600a610a05565b9750878b039650610694878d610838565b9550604060020a88029450600060025411156107105760016002036002888860025401604060020a8a8c8f0102028115156106cb57fe5b048115156106d557fe5b04604060020a03028115156106e657fe5b049350838802925082850394506002548381151561070057fe5b6004805492909104918201905591505b61071c60025487610892565b600255600160a060020a038a166000908152602081905260409020546107429087610892565b600160a060020a03909a166000908152602081815260408083209c909c5560045460019091529a902080549a9096029490940398890190945550506003805490960190955550505050505050565b60408051908101604052600381527f4550590000000000000000000000000000000000000000000000000000000000602082015281565b6107cf61086a565b6103b861047f565b6000806107e2610a1c565b90506002548314156107f657809150610832565b61082f8161082a60016002680296abf784a358468b196108198960025403610a41565b030281151561082457fe5b05610b26565b6109f3565b91505b50919050565b6000610863610566680296abf784a358468b1960026001610555888861085c610a1c565b0301610a41565b9392505050565b6000610875336105bb565b90506104fe81610c0a565b60006020819052908152604090205481565b60008282018381101561086357fe5b600080600080600080600080600064e8d4a510003410806108cb575069d3c21bcecceda100000034115b156108d557600080fd5b3398506108e334600a610a05565b975087340396506108f38761052c565b9550604060020a88029450600060025411156109765760016002036002888860025401604060020a8a8c610925610a1c565b01020281151561093157fe5b0481151561093b57fe5b04604060020a030281151561094c57fe5b049350838802925082850394506002548381151561096657fe5b6004805492909104918201905591505b61098260025487610892565b600255600160a060020a0389166000908152602081905260409020546109a89087610892565b600160a060020a039099166000908152602081815260408083209b909b5560045460019091529990208054999096029490940397880190945550506003805490950190945550505050565b6000828211156109ff57fe5b50900390565b6000808284811515610a1357fe5b04949350505050565b60006105e8610a29610ce5565b600354600254600454604060020a92910203046109f3565b60008080805b68016a09e667f3bcc908851115610a6957600285049450600190920191610a47565b5b67b504f333f9de64848511610a8c576002949094029360001990920191610a6a565b604060020a8501604060020a80870302811515610aa557fe5b05915050604060020a818002819005906801ffffffffff9dac9b67666664e5e9fa0c996738bd75ed37753d68673284a0c14610924f85028490050184028390056749254026a7630acf01840283900501830282900567aaaaaaac168779080183028290050183020567b17217f7d1cf79ac8460030b02019350505050919050565b6000808080604067b17217f7d1cf79ac682cb53f09f05cc627c887010503925067b17217f7d1cf79ac830285039450604060020a858602811515610b6657fe5b059150604060020a672aaaaaaaaa015db0660455956bccdd06651b893ad04b3919850283900501840282900566b60b60808399d01901840282900501830205604060020a600202019050848103604060020a86830102811515610bc557fe5b05935060008312610be95782846000821215610bdd57fe5b9060020a029350610c02565b82600003846000821215610bf957fe5b9060020a900493505b505050919050565b600080600080600080610c1c876107d7565b9550610c2986600a610a05565b94508486039350610c3c600254886109f3565b600255600160a060020a033316600090815260208190526040902054610c6290886109f3565b600160a060020a0333166000908152602081815260408083209390935560045460019091529181208054928a02604060020a880201928390039055600380548390039055600254919450901115610cdc57604060020a8502915060025482811515610cc957fe5b049050610cd860045482610892565b6004555b50505050505050565b600554349003905600a165627a7a723058206c7d107dcbe6f00e6ccb3d36b76f1e1c60de2a3c015200fad50d432f2f7f92f30029

   Swarm Source:
bzzr://6c7d107dcbe6f00e6ccb3d36b76f1e1c60de2a3c015200fad50d432f2f7f92f3

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.