Sponsored Link:   Alt.Estate - ERC20 for Real Estate. Live Prototype in Japan, USA, EU.Buy ALT tokens. Endorsed by partners of PWC, Knight Frank.
Contract Overview
Balance: 0.903162291731256257 Ether
Ether Value: $519.21 (@ $574.88/ETH)
Transactions: 438 txns
Token Contract: EthPyramid (EPY)
 Latest 25 txns from a total Of 438 transactions
View All

TxHash Age From To Value [TxFee]
0xbbef8e6f356c886f7bf16da456755b500d1c732e07324dca21370f0d8e7135a77 hrs 38 mins ago0x1db4408590fcda32928030e5ef2e8f2b04388b44  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.0001010394
0x31e2b4381ac8f1a99b8cfaaeeffd1f3eb0d867aab8ec3806edc39ddb3398f08815 hrs 21 mins ago0x391a3ea52c4a9f04be6900c3fd057dd9676c72e1  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.00025022
0x112df39a287d57a5012f226da924b3cc40cb7541d189d4a91c9b119f7f06666223 hrs 26 mins ago0x341c48c0e833e179cca6c605b823e9a4911a3d00  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.00062555
0x0fb3f16775a382ecf6112c9208e980e803cec8da9bc87bb53e6afa936005bc5f1 day 17 hrs ago0x123085670e817602041e58febb243abe01a9a825  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.00062555
0x8d5582a608d1e1c2976d1b9e4d9927a71a1b712b52840db1a9df47ea55444d3a2 days 10 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000321489
0xf3db9a1be025015b7874137014f41ed555ebe99d9107a36872a1267f2900de842 days 14 hrs ago0x3e9f41ac3068bbb232dc422ec9d2857866b24c3d  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000413343
0xb66d1b32165a2afed98e4c78fa5557e912ab815864190d983eee685b82be692f2 days 19 hrs ago0xd477104699fb687a81bb2dd607b0bb0d1c729cd3  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000813215
0x1f211a48ac3b7df894c586ad204191d52116d4e157cf68531a6a83aead833d6b2 days 19 hrs ago0x3d2084d65cd56583aaf306e38db432a399b34b63  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000813215
0x862edcc63141bd0fb6b48165c46c86c39c339a1cc697d32b7ecadb7cf1dee7082 days 19 hrs ago0x543239e7407bf2755099d8d892260eb1ec288008  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000812279
0xfff3111a450e43c17a1b92175343beb0a5539fb2edb10b40e430431849837d9f2 days 19 hrs ago0x8586107f0338099ec5fb86b680929965e92368a9  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000687313
0x6761cbc91e9c4cc298f272d21cdf8578a0ca79a8114b1678bf80a1821148f3ff2 days 19 hrs ago0x868234b7ce5793279c7b5258410acd894c95f41f  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000778613
0xd00246455cbec4c2becd93e48b017e1987bf2efacf3785720bfee2676d0dd3672 days 19 hrs ago0x868234b7ce5793279c7b5258410acd894c95f41f  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000687313
0x20cb9ae2c1bbc3a15b5e565a41523d78eb30e5a4e87352a57a8d57124f620c3b9 days 17 hrs ago0x3e9f41ac3068bbb232dc422ec9d2857866b24c3d  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.00045927
0xaa3ef209f66c1bbbfafc5f79cf9c360e3c8029623d6ce85d132e8098c3b93b5f12 days 3 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000456575
0x267a877ab36e157f93dd31bef18a75c9c011ec5e64d3556895ae54f54354bb3112 days 11 hrs ago0xb9cc1875eec851548cb7eca33ecc643fce9d44e3  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.00037552283
0x9f9ecafb5fdf0708c0e81ee928139ae7d44d9a3ffb901e249e0f3f24a6309de212 days 21 hrs ago0x4679d1a53a06d5853d8043855705be6e5df2717c  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000499864
0xfb58107a44acd70edbf4b85f0897ba28e0e4f3825522ceb97a759ba7b0fde0c914 days 8 hrs ago0x9a0cf297c8143d8e08296f5257ba81081b1a2e5b  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000187449
0x0a8b172367b986090e3aee777f3cf536dc0406dad7306a3bc611253a9259cc5e14 days 9 hrs ago0x1ed45acba1c716c8fbe88aa35d27842fb612e20a  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000187449
0xaee302403b4a32ed4140e53e8a123383e6cb6d72ebcad238409dd075af58a54a16 days 21 hrs ago0x3052e2dbf3c84cf0b9693ebe6a7ef1b11b93cd42  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000229635
0xdecb2b380beff853d66b4264f5d600ed9eaf73a994d0823f80817d472b4aa90116 days 22 hrs ago0x3052e2dbf3c84cf0b9693ebe6a7ef1b11b93cd42  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000190405
0x740249d8721654f9f79cc7ab52d539eee4c73387384daa0f852836505a2f633217 days 46 mins ago0x4679d1a53a06d5853d8043855705be6e5df2717c  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640.003 Ether0.000622755
0xe3c1ab36e79267eaf219e30be7128b1d58c9a1b1887d8253756fa661a906e72717 days 6 hrs ago0x1db4408590fcda32928030e5ef2e8f2b04388b44  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000229635
0x2e0f31023c3b427ac82bbb00be9af3f107b67c59c63fadcf8da2bfbc7622c45521 days 21 hrs ago0x42e56c2706ba71ed50a19bedf84deb92112c38e6  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000124966
0x382726c21be35be41c854eca205382cf8e735e5dcae1f2751ea40ea77529485323 days 14 hrs ago0x3d2084d65cd56583aaf306e38db432a399b34b63  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640 Ether0.000183708
0x35f50140671e3aeab6c1c6f2ba9868a313f1ba5553e25d960d3f7c07141f90d923 days 14 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0xa9e20fdd18c792f302e273b09aa142984f25ea640.05 Ether0.000176895
[ 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
0xbbef8e6f356c886f7bf16da456755b500d1c732e07324dca21370f0d8e7135a756832757 hrs 38 mins ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x1db4408590fcda32928030e5ef2e8f2b04388b440.007646473867413746 Ether
0x31e2b4381ac8f1a99b8cfaaeeffd1f3eb0d867aab8ec3806edc39ddb3398f088568147015 hrs 21 mins ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x391a3ea52c4a9f04be6900c3fd057dd9676c72e10.305021294711982004 Ether
0x112df39a287d57a5012f226da924b3cc40cb7541d189d4a91c9b119f7f066662567951423 hrs 26 mins ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x341c48c0e833e179cca6c605b823e9a4911a3d000.110291300535983171 Ether
0x0fb3f16775a382ecf6112c9208e980e803cec8da9bc87bb53e6afa936005bc5f56752441 day 17 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x123085670e817602041e58febb243abe01a9a8250.024413055144146941 Ether
0x8d5582a608d1e1c2976d1b9e4d9927a71a1b712b52840db1a9df47ea55444d3a56711942 days 10 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640xaec539a116fa75e8bdcf016d3c146a25bc1af93b0.055450499053089622 Ether
0xf3db9a1be025015b7874137014f41ed555ebe99d9107a36872a1267f2900de8456703502 days 14 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3e9f41ac3068bbb232dc422ec9d2857866b24c3d0.02264683349088321 Ether
0xb66d1b32165a2afed98e4c78fa5557e912ab815864190d983eee685b82be692f56691782 days 19 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640xd477104699fb687a81bb2dd607b0bb0d1c729cd30.051673309804703664 Ether
0x1f211a48ac3b7df894c586ad204191d52116d4e157cf68531a6a83aead833d6b56691282 days 19 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3d2084d65cd56583aaf306e38db432a399b34b630.978658413182047848 Ether
0x862edcc63141bd0fb6b48165c46c86c39c339a1cc697d32b7ecadb7cf1dee70856690962 days 19 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x543239e7407bf2755099d8d892260eb1ec2880081.071257093666869512 Ether
0xfff3111a450e43c17a1b92175343beb0a5539fb2edb10b40e430431849837d9f56690802 days 19 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x8586107f0338099ec5fb86b680929965e92368a90.113802676666764479 Ether
0xd00246455cbec4c2becd93e48b017e1987bf2efacf3785720bfee2676d0dd36756690702 days 19 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x868234b7ce5793279c7b5258410acd894c95f41f0.116086999857984955 Ether
0x20cb9ae2c1bbc3a15b5e565a41523d78eb30e5a4e87352a57a8d57124f620c3b56302999 days 17 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3e9f41ac3068bbb232dc422ec9d2857866b24c3d0.01174830577444722 Ether
0x267a877ab36e157f93dd31bef18a75c9c011ec5e64d3556895ae54f54354bb31561449312 days 11 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640xb9cc1875eec851548cb7eca33ecc643fce9d44e30.197988554813601015 Ether
0x9f9ecafb5fdf0708c0e81ee928139ae7d44d9a3ffb901e249e0f3f24a6309de2561222012 days 21 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x4679d1a53a06d5853d8043855705be6e5df2717c0.002395047936445575 Ether
0xfb58107a44acd70edbf4b85f0897ba28e0e4f3825522ceb97a759ba7b0fde0c9560387014 days 8 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x9a0cf297c8143d8e08296f5257ba81081b1a2e5b0.025763857459173025 Ether
0x0a8b172367b986090e3aee777f3cf536dc0406dad7306a3bc611253a9259cc5e560376614 days 9 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x1ed45acba1c716c8fbe88aa35d27842fb612e20a0.060774414917957216 Ether
0xaee302403b4a32ed4140e53e8a123383e6cb6d72ebcad238409dd075af58a54a558917116 days 21 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3052e2dbf3c84cf0b9693ebe6a7ef1b11b93cd420.028211850400207489 Ether
0xe3c1ab36e79267eaf219e30be7128b1d58c9a1b1887d8253756fa661a906e727558715517 days 6 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x1db4408590fcda32928030e5ef2e8f2b04388b440.010415053225355828 Ether
0x2e0f31023c3b427ac82bbb00be9af3f107b67c59c63fadcf8da2bfbc7622c455556054221 days 21 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x42e56c2706ba71ed50a19bedf84deb92112c38e60.012582619358307023 Ether
0x382726c21be35be41c854eca205382cf8e735e5dcae1f2751ea40ea775294853555084423 days 14 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3d2084d65cd56583aaf306e38db432a399b34b630.051546377323038622 Ether
0x4a02de38c2a77105e4680b989e86ecd7dde827e2251b7abb2e78fdf189e25b6a555033523 days 16 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x341c48c0e833e179cca6c605b823e9a4911a3d000.020563756558127439 Ether
0x6e1a7daba2f5aed3c3a5b12b6eabaa0d8dbad852f26dcb6b35ab846a6deae457555016623 days 17 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x391a3ea52c4a9f04be6900c3fd057dd9676c72e10.015388433578511603 Ether
0x11d0c06fa8ccf566801c9de204ec65d16ea049fc0eef9fdb8f5647e33864a244554485324 days 15 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x30602250c5f1fcba5407e99b1dfaab992ea4ffd20.077345059413585588 Ether
0x4b4412716c671ce676ec2594610b59e8854c5f6b6b36efb3cfe32f48bfda37fa554417824 days 18 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x415e94a5246ac4d3f16a833f51ff9066f215a4210.001006618164234644 Ether
0x523fcf01ff46784a9869199e2e70e9d3b1e7e5d7459b6475302bd0c693f48b68554334924 days 21 hrs ago0xa9e20fdd18c792f302e273b09aa142984f25ea640x3052e2dbf3c84cf0b9693ebe6a7ef1b11b93cd420.001935626723573153 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.