Sponsored Link:   Ambrosus Main-Net Launching: Stake AMB in Masternodes and get regular rewards for maintaining network integrity.
 Latest 25 txns from a total Of 13464 transactions
(+2 PendingTxns)

TxHash Age From To Value [TxFee]
0x13762aa8fa5d6f05a8c77492fc83bfe912a3cb232c6bd6c143938881b1266ec5(pending)0x6093b6507c6639dc7e6b84bc46796163ea404d89  IN  0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether(pending)
0x5b40008ece2313f19844a48b1b73f1a44509e710c9c420c0d52723760ab371c9(pending)0x6c7e847ec4e2e6d2c7aa54aad88b6529e2c87cfd  IN  0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether(pending)
0xff5150b1034e3982f41aa62f7d20de16069efb0a8e8ed861dcf9a231d2c6d22b12 hrs 57 mins ago0x851b27b6202142df490cc254accaee26303a7f34  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000195651
0x9e20e92c5bc80d36f4d6e4ba5d615c21bae8f0bed92abfe9d5c48f3c90dbc0761 day 23 mins ago0x126b17498d820ffdb33e51c39340d85991a2f828  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000091854
0x2c1fc79aa9e9284bac1d085cbec750f272a9207a6eeee6a763af89c51dd154dd1 day 6 hrs ago0xf44069dd129c235e2b5af78835de5f18df3f5a16  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000156908
0x387d0053b25f23de8aae976fac536ffbfaf107d2c2dbb35d01572df2138690e21 day 6 hrs ago0xf44069dd129c235e2b5af78835de5f18df3f5a16  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000183708
0x777d9574cf6df392d58c7902b9795b2964df3b655b1c16243239c90008d092811 day 6 hrs ago0xf44069dd129c235e2b5af78835de5f18df3f5a16  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000151752
0x0101a3fcfc9a2789967064cfd6cdd7606548dd7a4bc6cb76b630ea42463846a61 day 6 hrs ago0xf44069dd129c235e2b5af78835de5f18df3f5a16  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000183708
0x6140271fd529065d7008ec51687055227b7f1e8c895f0626ccf3bc1afbdfa1251 day 9 hrs ago0x39e1987f4189ab04f9f322bb1be51019d3891a51  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000413343
0x16b82c506971de924a2b03a52b386ebbe27d3ccb2cbf9e5b614975591678d9291 day 23 hrs ago0x1f3732424850c4dddffee9596c918c1b01ec928b  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000151752
0x0e2bba1dea02a52976f0888d30646e8a5fc1ac538abe07b9e09565e7db2391503 days 2 hrs ago0xbd98619b4bf9a0912c6acb7557d119eadcb1a040  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00195651
0x0b896a631c25b2983937774eb96a2cd98d79af84ed1b3f2d28f743abcf6edc513 days 7 hrs ago0x4f4ebf556cfdc21c3424f85ff6572c77c514fcae  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00229635
0x95d639510356ae7d55c49aa6474db57e12b76dd890cf3de92a4027cc606ad4bb3 days 7 hrs ago0x4f4ebf556cfdc21c3424f85ff6572c77c514fcae  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.001934838
0xc99dd2904afaecc37ac115cb39f1f32a32c2d500aa4a98b8f2a1df29b5d738a23 days 18 hrs ago0xe3b90e42b777bf9bc6e0e36294f8124ab93f6738  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00137781
0xc8aa0a922a136bf845896a0271cbb8f5ee386c56a29dd92b3f2ce21d75c26c533 days 18 hrs ago0xe3b90e42b777bf9bc6e0e36294f8124ab93f6738  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00113814
0x0a0a6490f8c7be2b41a3c7d02ca65436385ad067ac57b4663ebe46a7844c6ccc4 days 9 hrs ago0x661c202f6a161334739cc7f03c2ee6afd72359ee  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.001883007
0x10ebd2a30af3da35bccfc8d1282d629a9f812a3e3869052e7b5a5e58ece5dcd05 days 18 mins ago0x60f978a86c8c39234833f76f8c24812b2483a27c  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000367416
0xdbf1f831160190f5d41206da3aaa351c916ae06567c374a6bc8175de5047fd5c5 days 22 mins ago0x60f978a86c8c39234833f76f8c24812b2483a27c  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000303504
0x054faaf25ba11fd0929689e0ef5a9e9abf63907fddf3b3471cdecb0186857f005 days 23 mins ago0x60f978a86c8c39234833f76f8c24812b2483a27c  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000367416
0x3bc577256b1d50337fcf0c82a6e08dc6f93598635fae7b7f2385386399ecf7fc7 days 21 hrs ago0xff3727d6bb20ccf0425fdf7de55aea9c095c54f4  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000321489
0xba1b78c498d4f9270857e29b8888dd39464c57070472344d31bdae16139af2a27 days 22 hrs ago0xff3727d6bb20ccf0425fdf7de55aea9c095c54f4  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000341442
0xb0114b99239dd45c8d8593c0c3253e4c195a535eb5a60d22ae1521a148d4415a9 days 2 hrs ago0xffb2aa8d0433c0031df7783805224d458b06d9d6  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.000321489
0x9903cd921ee53ad2613acde2b7daf5f2bae53ffa5a4653d7af90864f94bbe6859 days 3 hrs ago0x74a81b4e9c1300f188728c33e686c5d0df47f919  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.0039227
0x36a92ec52330f2036c0585182ed36cc433e4cd0440268a05a499f5c8e0de20049 days 4 hrs ago0x602dc1d22884e333fca32eb03105773c3b97b22b  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00045927
0x20440d30a44c13dc8e2fa80f6001cfb1533f11479c89e40867df752f5055b9039 days 4 hrs ago0x602dc1d22884e333fca32eb03105773c3b97b22b  IN   0x2fa0ac498d01632f959d3c18e38f4390b005e2000 Ether0.00037938
[ 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
0x9e20e92c5bc80d36f4d6e4ba5d615c21bae8f0bed92abfe9d5c48f3c90dbc07659776041 day 23 mins ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x126b17498d820ffdb33e51c39340d85991a2f8280.00195202449755059 Ether
0x387d0053b25f23de8aae976fac536ffbfaf107d2c2dbb35d01572df2138690e259761101 day 6 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xf44069dd129c235e2b5af78835de5f18df3f5a160.370249013867422234 Ether
0x0101a3fcfc9a2789967064cfd6cdd7606548dd7a4bc6cb76b630ea42463846a659760781 day 6 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xf44069dd129c235e2b5af78835de5f18df3f5a160.09668136419578268 Ether
0x6140271fd529065d7008ec51687055227b7f1e8c895f0626ccf3bc1afbdfa12559752971 day 9 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x39e1987f4189ab04f9f322bb1be51019d3891a510.003405695780386425 Ether
0x0b896a631c25b2983937774eb96a2cd98d79af84ed1b3f2d28f743abcf6edc5159639123 days 7 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x4f4ebf556cfdc21c3424f85ff6572c77c514fcae0.064360783277046692 Ether
0xc99dd2904afaecc37ac115cb39f1f32a32c2d500aa4a98b8f2a1df29b5d738a259612293 days 18 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xe3b90e42b777bf9bc6e0e36294f8124ab93f67380.105201342506275879 Ether
0x0a0a6490f8c7be2b41a3c7d02ca65436385ad067ac57b4663ebe46a7844c6ccc59573264 days 9 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x661c202f6a161334739cc7f03c2ee6afd72359ee0.000905742160751896 Ether
0x10ebd2a30af3da35bccfc8d1282d629a9f812a3e3869052e7b5a5e58ece5dcd059537415 days 18 mins ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x60f978a86c8c39234833f76f8c24812b2483a27c0.480379345719470784 Ether
0x054faaf25ba11fd0929689e0ef5a9e9abf63907fddf3b3471cdecb0186857f0059537245 days 23 mins ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x60f978a86c8c39234833f76f8c24812b2483a27c0.005779231209579498 Ether
0x3bc577256b1d50337fcf0c82a6e08dc6f93598635fae7b7f2385386399ecf7fc59366037 days 21 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xff3727d6bb20ccf0425fdf7de55aea9c095c54f40.088323160206643536 Ether
0xb0114b99239dd45c8d8593c0c3253e4c195a535eb5a60d22ae1521a148d4415a59297619 days 2 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xffb2aa8d0433c0031df7783805224d458b06d9d60.010515627274576898 Ether
0x36a92ec52330f2036c0585182ed36cc433e4cd0440268a05a499f5c8e0de200459292169 days 4 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x602dc1d22884e333fca32eb03105773c3b97b22b0.306502224595748295 Ether
0x4f7293f02710d5fefafeec431505a8c9dd3e6009780373f7bda5a26fc914959c59285559 days 6 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x47600dcf95e45ae6f0e263e51a70f8f091d4d27c0.058635012176457977 Ether
0xbe21fe6363ede0f03591dc9c1e2203dd1c84545d402bfad2eb5228962655978e59248989 days 22 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xff16d64179a02d6a56a1183a28f1d6293646e2dd0.126679500913786848 Ether
0x290f00237427fea4bffce6b9cba364fa2493a9af1a9292fb6bda3e4fa0f0dab7590514113 days 8 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xca6ff42933c0c76e9ae059b495476fad3e3664940.155009113801013278 Ether
0x8c61557b17f43659908af5319b298bfa364d44a33bbf32509829a25bdc36db86590056214 days 2 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x74a81b4e9c1300f188728c33e686c5d0df47f9190.477825384298163249 Ether
0xbc2d06896d2a24aa885ec517e6ae456d408a88546e0e5d46d97ca0a91ffbaa94589038915 days 20 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x5f3399cd4b860ceb0519d6cf0d7a337ff2c2f57e0.083451714866505148 Ether
0x90ee503bb945e39af00d32b9dd62c84f6c5bc3a4944dd06de5d1efba0ef1af31587351918 days 17 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xa0a4fa59559030516b9fe53bb297c5136c75b3a60.000439133625385861 Ether
0x4531030197ac2d20dc4de7c4387c15df5fb81f13d4c76b91754daa055bfd6461586680319 days 21 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x246da67bddff0c17c35af0a11858eecd5b2a3c2d0.651849919992006106 Ether
0xd1e91cfe773bcf3b0971dda9bd5794755cbc2ed816ed3595105ed2804c3ef297586598620 days 1 hr ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x87d641600c7962ab5cd87802b15b97ade5b73b2a0.008090387647976896 Ether
0x45ae250155e95291677a197d46d4be8d6020b6692cf5a73bde26790c7b21ad6a586258420 days 14 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xe57a18783640c9fa3c5e8e4d4b4443e2024a7ff90.219057245855708616 Ether
0x10d2f7ed44be81fa1efae61e31c306597227727ad7286f0967917ec4e0e2386b583771924 days 21 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x553ffd3eee5685e408681c3b0da21ad566b14af81.055403332814657639 Ether
0xdd0d072d58fa88cc8e0c10ec4ba171c495f7cf00ea7cbee7359d2085bc59f8fb582592426 days 22 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xd78f9ab0f7738bf562d22f08eb00c77727197a000.074215092471725732 Ether
0x6e377dd38025e2c61807093b75760e7d12ac16c848e8da64432b87e9e8e8abc1582392627 days 6 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000x87d1e5d9395631e5b78a587f9b82d8cb52c7f7110.069567175589289301 Ether
0x2793db06335c78068b84e78519d0587eb1143e391db168ba31c9061c62625f27582197327 days 14 hrs ago0x2fa0ac498d01632f959d3c18e38f4390b005e2000xf5ce408096638b1658057f0c0f94ce3a25c6a05c0.023812000951615304 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Similar match)
Note: Displaying similar matching verified source code at contract 0xc908a34165d2720d12ffcfb6b99b47161b1c9946(excluding Constructor Arguments if any)
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.