Sponsored Link:   SHARPAY.io • Share button with blockchain profit • ICOBench TOP Project • 30% Bonus • Buy Now!
Contract Overview
Balance: 0.781447333640881315 Ether
Ether Value: $469.37 (@ $600.64/ETH)
Transactions: 40 txns
Token Contract: EthPyramid (EPY)
 Latest 25 txns from a total Of 40 transactions
View All

TxHash Age From To Value [TxFee]
0x9788474856a662f4a7335bf7eea413df46343f3f6da6e34a328b1906c05bdb8e1 hr 36 mins ago0x341c48c0e833e179cca6c605b823e9a4911a3d00  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.00062555
0x34836dff36b980367f39eaf4818d87c3cde1878a22b0a9e024111b11b6ef7c9b1 day 16 hrs ago0x3e9f41ac3068bbb232dc422ec9d2857866b24c3d  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000413343
0x34d7a1681fb1d3cce3192a00ff408ec3ebd60ba003d7509dc422567bd13a78fc1 day 21 hrs ago0x3d2084d65cd56583aaf306e38db432a399b34b63  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000921115
0x95187172e9be439878aebc6b16539d1a76b136cfa561e9959f2936ecdb4f05ca1 day 21 hrs ago0x3d2084d65cd56583aaf306e38db432a399b34b63  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000813215
0x5b7ee34b623169456644512446b715558ab7969c2e903808f6ecc4027d6911a317 days 22 hrs ago0x361084af8d45e07885b31fcedcb642b9cc7b72d7  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.0034085 Ether0.000236724
0x0fd781084b35eed6c76d3e170dbd30f8cd5b9f76ed8d21a91d5a55c29dca432020 days 12 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.00012511
0x9e401e3ab2524ea98761cee94dabea022a279252e8ba0864f635ab2d07ee936422 days 18 hrs ago0x341c48c0e833e179cca6c605b823e9a4911a3d00  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000137781
0x0ff10b6fb0f84b0ddb1392d8d2c63964cf376a0f3c3cc53bc70c311938d8969831 days 14 hrs ago0x415e94a5246ac4d3f16a833f51ff9066f215a421  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000045927
0x91d7c96070098dd6f22edf7ee51ba873d00c653db4191e4e627832f61f9c156732 days 1 hr ago0xab8c5c034f1cd123c62413a88ef3ada2d90f68c5  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.00012511
0x5adcb245e6bbb4bae400c464e04c8c102781825952a5c383b20ec2dc7647b18d33 days 4 hrs ago0x361084af8d45e07885b31fcedcb642b9cc7b72d7  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.003246 Ether0.000059109
0xdf30d31dd1491e71c028792b7e7143cb8a24f602cce9e13cb9bca2514e7e560636 days 23 hrs ago0x361084af8d45e07885b31fcedcb642b9cc7b72d7  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.00195 Ether0.000236436
0x93a9ee1262d2a0dbcadc4b2d29f90893a43d10a283591ca54c0abe0cc2cc2fe342 days 5 hrs ago0xaec539a116fa75e8bdcf016d3c146a25bc1af93b  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000065369
0x0b8974e0322469e19eb0204130c6a45d7449f3d68927b0c32581d581cffcb7bf42 days 7 hrs ago0x999fe41174df4a6e311da87d2def232fd389b654  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.00012511
0x532762b7e5b342ca0885f31f321d79d28651e70bf5cceba664798d843236dab642 days 16 hrs ago0xd52c9c3b7c03719d6cc4c357df907749f24292e0  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000070855
0x8bd3ac305ae2f006d810daf249347014758c832bbcb97d97f7ccadc2fe3f5f9242 days 16 hrs ago0xd52c9c3b7c03719d6cc4c357df907749f24292e0  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.000062555
0x7b8861fd1c9242c2d180e8ece455b4cc1d9e88eb4ae033e8a89d85bbc08a06b442 days 21 hrs ago0x3258f084419f70219b9e3bc0ae3e6f64b577e52b  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.0000688105
0x726dbbfe3bd594c9ff3c2266b4faf24235777fae952ea050fd4deec938daee4743 days 42 mins ago0x999fe41174df4a6e311da87d2def232fd389b654  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.1 Ether0.000178218
0x2cc5055a3d18b62b86e8c096a6153645fbdb6c9ef339251720d3f6fdcd604aaa45 days 21 hrs ago0x361084af8d45e07885b31fcedcb642b9cc7b72d7  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.0001455 Ether0.00001477725
0x525a2fec5b8949af052f0afc4468f7757a5fc3b3c83eb3d7eb0ba3ef1d9eaa2b46 days 14 hrs ago0x361084af8d45e07885b31fcedcb642b9cc7b72d7  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.00125 Ether0.00002227725
0x2ac3e6c51521a3ea6febe687e4cecb1d8f2cfc4412e50eaf4151902bfef2112a48 days 13 hrs ago0xd52c9c3b7c03719d6cc4c357df907749f24292e0  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.15 Ether0.000089109
0xe085b7cf25df685b5eff45490b4f497234c626ee71956a7abf5e4ce70e9f771649 days 1 hr ago0x3e9f41ac3068bbb232dc422ec9d2857866b24c3d  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.2 Ether0.000089109
0x4de0e1de8c6de30ebbb7e9784db3c19a3f47fd4dc698522d10355789ff9e57a851 days 6 hrs ago0xb7b34a0a8a2ad8c01124f2fb8456d18745d21b24  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.0016444 Ether0.000089181
0xc1a29bb927fef1e11f20ab8eb0faa37a5129702717cd9bc049607375c5a88fa551 days 11 hrs ago0x3258f084419f70219b9e3bc0ae3e6f64b577e52b  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.01 Ether0.000089181
0x941ff60e632831dacf93c167a0a5c36d2c7118605d0bd7297fda9800f07e700851 days 23 hrs ago0x391a3ea52c4a9f04be6900c3fd057dd9676c72e1  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0.01 Ether0.000089181
0xc13d01b4a9e8f8930b6fecfc6361b18ece7a4c3b019b198a4d548ee2f92eba9056 days 15 hrs ago0x9afda2dd29775559f42833302feb357b0cf33f97  IN   0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0 Ether0.00012511
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 13 Internal Transactions

ParentTxHash Block Age From To Value
0x9788474856a662f4a7335bf7eea413df46343f3f6da6e34a328b1906c05bdb8e56794951 hr 36 mins ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x341c48c0e833e179cca6c605b823e9a4911a3d000.029008864060101033 Ether
0x34836dff36b980367f39eaf4818d87c3cde1878a22b0a9e024111b11b6ef7c9b56703841 day 16 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x3e9f41ac3068bbb232dc422ec9d2857866b24c3d0.009046590209883394 Ether
0x95187172e9be439878aebc6b16539d1a76b136cfa561e9959f2936ecdb4f05ca56691351 day 21 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x3d2084d65cd56583aaf306e38db432a399b34b630.09142230460855731 Ether
0x0fd781084b35eed6c76d3e170dbd30f8cd5b9f76ed8d21a91d5a55c29dca4320556303020 days 12 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0xaec539a116fa75e8bdcf016d3c146a25bc1af93b0.103738146529692638 Ether
0x9e401e3ab2524ea98761cee94dabea022a279252e8ba0864f635ab2d07ee9364555039822 days 18 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x341c48c0e833e179cca6c605b823e9a4911a3d000.002282151653577865 Ether
0x0ff10b6fb0f84b0ddb1392d8d2c63964cf376a0f3c3cc53bc70c311938d89698549973831 days 14 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x415e94a5246ac4d3f16a833f51ff9066f215a4210.000395466641362816 Ether
0x91d7c96070098dd6f22edf7ee51ba873d00c653db4191e4e627832f61f9c1567549685132 days 1 hr ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0xab8c5c034f1cd123c62413a88ef3ada2d90f68c50.023092690171552936 Ether
0x0b8974e0322469e19eb0204130c6a45d7449f3d68927b0c32581d581cffcb7bf543698542 days 7 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x999fe41174df4a6e311da87d2def232fd389b6540.076054372232104241 Ether
0x8bd3ac305ae2f006d810daf249347014758c832bbcb97d97f7ccadc2fe3f5f92543496042 days 16 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0xd52c9c3b7c03719d6cc4c357df907749f24292e00.127595210134127913 Ether
0x7b8861fd1c9242c2d180e8ece455b4cc1d9e88eb4ae033e8a89d85bbc08a06b4543368842 days 21 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x3258f084419f70219b9e3bc0ae3e6f64b577e52b0.010433403951413109 Ether
0xc13d01b4a9e8f8930b6fecfc6361b18ece7a4c3b019b198a4d548ee2f92eba90535098756 days 15 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x9afda2dd29775559f42833302feb357b0cf33f970.016212870545852688 Ether
0x93b4be3f480057ed53e63f9720436862d53d916dd601b56a84829d554c004f545068626104 days 8 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x5e79ec5eb679cea45be3392381f4637fe1eb6e620.000810045004511956 Ether
0x2ed5d2946bbf124086c1825dec0e4f14685ce9c82a8f69aa4c18462edf57287e5027816111 days 4 hrs ago0x5037c9fbfccbbb8409157d72cb9579ac3d05661e0x5f8568ad07413eb409247ee2a31c33c0ce82f19d0.008104950616380786 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.