Contract Overview
Balance:
0 Ether
EtherValue:
$0
Transactions:
40 txns
Latest 25 transactions from a total of 40 transactions
[ Download CSV Export ]
Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name: | Ethmoon |
Compiler Version: | v0.4.25+commit.59dbf8f1 |
Optimization Enabled: | Yes |
Runs (Optimizer): | 200 |
Contract Source Code
pragma solidity ^0.4.25; /** Multiplier ETHMOON: returns 125% of each investment! Fully transparent smartcontract with automatic payments proven professionals. An additional level of protection against fraud - you can make only two deposits, until you get 125%. 1. Send any sum to smart contract address - sum from 0.01 to 5 ETH - min 250000 gas limit - you are added to a queue - only two deposit until you got 125% 2. Wait a little bit 3. ... 4. PROFIT! You have got 125% How is that? 1. The first investor in the queue (you will become the first in some time) receives next investments until it become 125% of his initial investment. 2. You will receive payments in several parts or all at once 3. Once you receive 125% of your initial investment you are removed from the queue. 4. You can make no more than two deposits at once 5. The balance of this contract should normally be 0 because all the money are immediately go to payouts So the last pays to the first (or to several first ones if the deposit big enough) and the investors paid 125% are removed from the queue new investor --| brand new investor --| investor5 | new investor | investor4 | =======> investor5 | investor3 | investor4 | (part. paid) investor2 <| investor3 | (fully paid) investor1 <-| investor2 <----| (pay until 125%) Контракт ETHMOON: возвращает 125% от вашего депозита! Полностью прозрачный смартконтракт с автоматическими выплатами, проверенный профессионалами. Дополнительный уровень защиты от обмана - вы сможете внести только два депозита, пока вы не получите 125%. 1. Пошлите любую ненулевую сумму на адрес контракта - сумма от 0.01 до 5 ETH - gas limit минимум 250000 - вы встанете в очередь - только два депозита, пока не получите 125% 2. Немного подождите 3. ... 4. PROFIT! Вам пришло 125% от вашего депозита. Как это возможно? 1. Первый инвестор в очереди (вы станете первым очень скоро) получает выплаты от новых инвесторов до тех пор, пока не получит 125% от своего депозита 2. Выплаты могут приходить несколькими частями или все сразу 3. Как только вы получаете 125% от вашего депозита, вы удаляетесь из очереди 4. Вы можете делать не больше двух депозитов сразу 5. Баланс этого контракта должен обычно быть в районе 0, потому что все поступления сразу же направляются на выплаты Таким образом, последние платят первым, и инвесторы, достигшие выплат 125% от депозита, удаляются из очереди, уступая место остальным новый инвестор --| совсем новый инвестор --| инвестор5 | новый инвестор | инвестор4 | =======> инвестор5 | инвестор3 | инвестор4 | (част. выплата) инвестор2 <| инвестор3 | (полная выплата) инвестор1 <-| инвестор2 <----| (доплата до 125%) */ contract Ethmoon { // address for promo expences address constant private PROMO = 0xa4Db4f62314Db6539B60F0e1CBE2377b918953Bd; address constant private TECH = 0x093D552Bde4D55D2e32dedA3a04D3B2ceA2B5595; // percent for promo/tech expences uint constant public PROMO_PERCENT = 6; uint constant public TECH_PERCENT = 2; // how many percent for your deposit to be multiplied uint constant public MULTIPLIER = 125; // deposit limits uint constant public MIN_DEPOSIT = .01 ether; uint constant public MAX_DEPOSIT = 5 ether; // the deposit structure holds all the info about the deposit made struct Deposit { address depositor; // the depositor address uint128 deposit; // the deposit amount uint128 expect; // how much we should pay out (initially it is 125% of deposit) } Deposit[] private queue; // the queue uint public currentReceiverIndex = 0; // the index of the first depositor in the queue. The receiver of investments! // this function receives all the deposits // stores them and make immediate payouts function () public payable { require(gasleft() >= 220000, "We require more gas!"); // we need gas to process queue require((msg.value >= MIN_DEPOSIT) && (msg.value <= MAX_DEPOSIT)); // do not allow too big investments to stabilize payouts require(getDepositsCount(msg.sender) < 2); // not allow more than 2 deposit in until you to receive 125% of deposit back // add the investor into the queue. Mark that he expects to receive 125% of deposit back queue.push(Deposit(msg.sender, uint128(msg.value), uint128(msg.value * MULTIPLIER/100))); // send some promo to enable this contract to leave long-long time uint promo = msg.value * PROMO_PERCENT/100; PROMO.transfer(promo); uint tech = msg.value * TECH_PERCENT/100; TECH.transfer(tech); // pay to first investors in line pay(); } // used to pay to current investors // each new transaction processes 1 - 4+ investors in the head of queue // depending on balance and gas left function pay() private { // try to send all the money on contract to the first investors in line uint128 money = uint128(address(this).balance); // we will do cycle on the queue for (uint i=0; i<queue.length; i++) { uint idx = currentReceiverIndex + i; // get the index of the currently first investor Deposit storage dep = queue[idx]; // get the info of the first investor if (money >= dep.expect) { // if we have enough money on the contract to fully pay to investor dep.depositor.transfer(dep.expect); // send money to him money -= dep.expect; // update money left // this investor is fully paid, so remove him delete queue[idx]; } else { // here we don't have enough money so partially pay to investor dep.depositor.transfer(money); // send to him everything we have dep.expect -= money; // update the expected amount break; // exit cycle } if (gasleft() <= 50000) // check the gas left. If it is low, exit the cycle break; // the next investor will process the line further } currentReceiverIndex += i; // update the index of the current first investor } // get the deposit info by its index // you can get deposit index from function getDeposit(uint idx) public view returns (address depositor, uint deposit, uint expect){ Deposit storage dep = queue[idx]; return (dep.depositor, dep.deposit, dep.expect); } // get the count of deposits of specific investor function getDepositsCount(address depositor) public view returns (uint) { uint c = 0; for (uint i=currentReceiverIndex; i<queue.length; ++i) { if(queue[i].depositor == depositor) c++; } return c; } // get all deposits (index, deposit, expect) of a specific investor function getDeposits(address depositor) public view returns (uint[] idxs, uint128[] deposits, uint128[] expects) { uint c = getDepositsCount(depositor); idxs = new uint[](c); deposits = new uint128[](c); expects = new uint128[](c); if (c > 0) { uint j = 0; for (uint i=currentReceiverIndex; i<queue.length; ++i) { Deposit storage dep = queue[i]; if (dep.depositor == depositor) { idxs[j] = i; deposits[j] = dep.deposit; expects[j] = dep.expect; j++; } } } } // get current queue size function getQueueLength() public view returns (uint) { return queue.length - currentReceiverIndex; } }
Contract ABI
[{"constant":true,"inputs":[],"name":"MULTIPLIER","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentReceiverIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"depositor","type":"address"}],"name":"getDeposits","outputs":[{"name":"idxs","type":"uint256[]"},{"name":"deposits","type":"uint128[]"},{"name":"expects","type":"uint128[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"idx","type":"uint256"}],"name":"getDeposit","outputs":[{"name":"depositor","type":"address"},{"name":"deposit","type":"uint256"},{"name":"expect","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TECH_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getQueueLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PROMO_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"depositor","type":"address"}],"name":"getDepositsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_DEPOSIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_DEPOSIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
6080604052600060015534801561001557600080fd5b5061092d806100256000396000f3006080604052600436106100a35763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663059f8b1681146102e25780632d95663b1461030957806394f649dd1461031e5780639f9fb9681461041d578063abce62a81461045d578063b8f7700514610472578063c533a5a314610487578063c67f7df51461049c578063dd5967c3146104bd578063e1e158a5146104d2575b60008062035b605a101561011857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f57652072657175697265206d6f72652067617321000000000000000000000000604482015290519081900360640190fd5b662386f26fc1000034101580156101375750674563918244f400003411155b151561014257600080fd5b600261014d336104e7565b1061015757600080fd5b604080516060810182523381526001608060020a0334818116602084019081526064607d8302819004841685870190815260008054600181018255818052965160029097027f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5638101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039099169890981790975592517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909601805491516fffffffffffffffffffffffffffffffff19909216968616969096178516608060020a9190951602939093179093559251600690930204935073a4db4f62314db6539b60f0e1cbe2377b918953bd916108fc85150291859190818181858888f1935050505015801561028a573d6000803e3d6000fd5b5050604051606460023402049073093d552bde4d55d2e32deda3a04d3b2cea2b5595906108fc8315029083906000818181858888f193505050501580156102d5573d6000803e3d6000fd5b506102de610549565b5050005b3480156102ee57600080fd5b506102f76106e2565b60408051918252519081900360200190f35b34801561031557600080fd5b506102f76106e7565b34801561032a57600080fd5b5061033f600160a060020a03600435166106ed565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561038757818101518382015260200161036f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156103c65781810151838201526020016103ae565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156104055781810151838201526020016103ed565b50505050905001965050505050505060405180910390f35b34801561042957600080fd5b5061043560043561087d565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561046957600080fd5b506102f76108d6565b34801561047e57600080fd5b506102f76108db565b34801561049357600080fd5b506102f76108e5565b3480156104a857600080fd5b506102f7600160a060020a03600435166104e7565b3480156104c957600080fd5b506102f76108ea565b3480156104de57600080fd5b506102f76108f6565b60015460009081905b6000548110156105425783600160a060020a031660008281548110151561051357fe5b6000918252602090912060029091020154600160a060020a0316141561053a576001909101905b6001016104f0565b5092915050565b3031600080805b6000548310156106d4578260015401915060008281548110151561057057fe5b600091825260209091206002909102016001810154909150608060020a90046001608060020a03908116908516106106515780546001820154604051600160a060020a03909216916001608060020a03608060020a9092049190911680156108fc02916000818181858888f193505050501580156105f2573d6000803e3d6000fd5b508060010160109054906101000a90046001608060020a03168403935060008281548110151561061e57fe5b600091825260208220600290910201805473ffffffffffffffffffffffffffffffffffffffff19168155600101556106bb565b8054604051600160a060020a03909116906001608060020a03861680156108fc02916000818181858888f19350505050158015610692573d6000803e3d6000fd5b506001810180546001608060020a03608060020a808304821688900382160291161790556106d4565b61c3505a116106c9576106d4565b600190920191610550565b505060018054909101905550565b607d81565b60015481565b6060806060600080600080610701886104e7565b93508360405190808252806020026020018201604052801561072d578160200160208202803883390190505b5096508360405190808252806020026020018201604052801561075a578160200160208202803883390190505b50955083604051908082528060200260200182016040528015610787578160200160208202803883390190505b5094506000841115610872576000925060015491505b6000548210156108725760008054839081106107b557fe5b600091825260209091206002909102018054909150600160a060020a0389811691161415610867578187848151811015156107ec57fe5b60209081029091010152600181015486516001608060020a039091169087908590811061081557fe5b6001608060020a039283166020918202909201015260018201548651608060020a9091049091169086908590811061084957fe5b6001608060020a039092166020928302909101909101526001909201915b81600101915061079d565b505050509193909250565b60008060008060008581548110151561089257fe5b600091825260209091206002909102018054600190910154600160a060020a03909116966001608060020a038083169750608060020a909204909116945092505050565b600281565b6001546000540390565b600681565b674563918244f4000081565b662386f26fc10000815600a165627a7a723058201d33ace54058277c8bf272e85a560b866f88a6c251f857f0431a02ac1d40b5ad0029
Swarm Source:
bzzr://1d33ace54058277c8bf272e85a560b866f88a6c251f857f0431a02ac1d40b5ad
Block | Age | transaction | Difficulty | GasUsed | Reward |
---|
Block | Age | Uncle Number | Difficulty | GasUsed | Reward |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.