ETH Price: $2,069.53 (-12.92%)

Contract

0xa8033828D8Dc3c82d42c104E85214E431CCAB1D9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Revert Funds53683572018-04-02 17:56:352527 days ago1522691795IN
0xa8033828...31CCAB1D9
0 ETH0.000221310
Transfer52079592018-03-06 17:35:442554 days ago1520357744IN
0xa8033828...31CCAB1D9
0 ETH0.000133473
Transfer51781742018-03-01 16:33:522559 days ago1519922032IN
0xa8033828...31CCAB1D9
0.008 ETH0.000553863
Transfer51781732018-03-01 16:33:372559 days ago1519922017IN
0xa8033828...31CCAB1D9
0.008 ETH0.000282113
Transfer51781732018-03-01 16:33:372559 days ago1519922017IN
0xa8033828...31CCAB1D9
0.032 ETH0.000282833
Transfer51781672018-03-01 16:31:392559 days ago1519921899IN
0xa8033828...31CCAB1D9
0.016 ETH0.000282833
Transfer51781632018-03-01 16:30:302559 days ago1519921830IN
0xa8033828...31CCAB1D9
0.008 ETH0.000282113
Transfer51781552018-03-01 16:28:292559 days ago1519921709IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51781422018-03-01 16:26:122559 days ago1519921572IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51781342018-03-01 16:24:282559 days ago1519921468IN
0xa8033828...31CCAB1D9
0.04 ETH0.000282833
Transfer51781342018-03-01 16:24:282559 days ago1519921468IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.032 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.032 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.04 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51781312018-03-01 16:23:382559 days ago1519921418IN
0xa8033828...31CCAB1D9
0.032 ETH0.000282833
Transfer51737662018-02-28 22:35:392560 days ago1519857339IN
0xa8033828...31CCAB1D9
0.016 ETH0.000282833
Transfer51737632018-02-28 22:34:302560 days ago1519857270IN
0xa8033828...31CCAB1D9
0.008 ETH0.000282113
Transfer51737602018-02-28 22:33:482560 days ago1519857228IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51737472018-02-28 22:31:052560 days ago1519857065IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
Transfer51488632018-02-24 16:44:542564 days ago1519490694IN
0xa8033828...31CCAB1D9
0.016 ETH0.000282833
Transfer51487042018-02-24 16:01:562564 days ago1519488116IN
0xa8033828...31CCAB1D9
0.016 ETH0.000282833
Transfer51482282018-02-24 14:02:382564 days ago1519480958IN
0xa8033828...31CCAB1D9
0.008 ETH0.000282113
Transfer51482042018-02-24 13:56:232564 days ago1519480583IN
0xa8033828...31CCAB1D9
0.024 ETH0.000282833
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
52079592018-03-06 17:35:442554 days ago1520357744
0xa8033828...31CCAB1D9
0.72 ETH
52079592018-03-06 17:35:442554 days ago1520357744
0xa8033828...31CCAB1D9
0.08 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x927A4e90...Fa9e54Df7
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Dextera

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-01-22
*/

pragma solidity 0.4.19;

contract Dextera {
	/*
		Statics
	*/

	// Creator account
	address public creator = msg.sender;

	// Sellers account
	address public seller;

	// One ticket price in wei
	uint256 public ticketPrice;

	// Minimum number of tickets for successful completion
	uint256 public minimumTickets;

	// Creator fee percent
	uint256 public creatorFeePercent;

	// Datetime of contract end
	uint256 public saleEndTime;

	/*
		Mutables
	*/

	// Datetime of successful processing
	uint256 public successfulTime;

	// Buyers
	struct Buyer {
		address ethAddress;
		uint256 atTicket;
		uint256 amountPaid;
	}
	mapping(uint256 => Buyer) public buyers;

	// Total buyers counter
	uint256 public totalBuyers = 0;

	// Total tickets counter
	uint256 public totalTickets = 0;

	// Buyer index for funds return
	uint256 public returnLastBuyerIndex = 0;

	// Winner, buyers mapping key (statring from 0)
	uint256 public winnerKey = 0;

	// Winner ticket number (starting from 1)
	uint256 public winnerTicket = 0;

	// Sale states
	enum States { Started, NoEntry, Failed, Succeeded }
	States public saleState = States.Started;

	/*
		Constructor
	*/

	// Saving the contract statics
	function Dextera(address _seller, uint256 _ticketPrice, uint256 _minimumTickets, uint256 _creatorFeePercent, uint256 _saleDays) public {
		// Saving the sellers address
		seller = _seller;

		// Set the 1 ticket price
		ticketPrice = _ticketPrice;

		// Set minimum tickets for a successful sale
		minimumTickets = _minimumTickets;

		// Set the creator fee
		creatorFeePercent = _creatorFeePercent;

		// Set the sale end datetime
 		saleEndTime = now + _saleDays * 1 days;
  }

	/*
		Modifiers
	*/

	// Only creator
	modifier onlyCreator() {
		require(msg.sender == creator);
		_;
	}

	// State checker
	modifier inState(States _state) {
		require(saleState == _state);
		_;
	}

	/*
		Participation
	*/

	// Fallback function (simple funds transfer)
	function() public payable {
		// Buy a ticket, only if the sell is running
		if (saleState == States.Started) {
			// Is the amount enough?
			require(msg.value >= ticketPrice);

			// How many tickets we can buy?
			uint256 _ticketsBought = 1;
			if (msg.value > ticketPrice) {
				_ticketsBought = msg.value / ticketPrice;
			}

			// Do we have enough tickets for this sale?
			require(minimumTickets - totalTickets >= _ticketsBought);

			// Increment the quantity of tickets sold
			totalTickets = totalTickets + _ticketsBought;

			// Save the buyer
			buyers[totalBuyers] = Buyer(msg.sender, totalTickets, msg.value);

			// Save the new buyers counter
			totalBuyers = totalBuyers + 1;

			// We sold all the tickets?
			if (totalTickets >= minimumTickets) {
				finalSuccess();
			}

		// Protection, unblock funds by the winner, only after sell was closed
		} else if (saleState == States.NoEntry) {
			// Only winner
			require(msg.sender == buyers[winnerKey].ethAddress);

			// Check if there is enough balance
			require(this.balance > 0);

			// Amount should be zero
			require(msg.value == 0);

			// Setting the state of the sale
			saleState = States.Succeeded;

			// Send fee percent amount to us
			uint256 _creatorFee = (this.balance * creatorFeePercent / 100);
			creator.send(_creatorFee);

			// Another amount to the seller
			seller.send(this.balance);

		// Not allowed to send call
		} else {
			require(false);
		}
	}

	/*
		Completion
	*/

	// Not enough tickets sold within timeframe, the sale failed
	function saleFinalize() public inState(States.Started) {
		// Is it the time?
		require(now >= saleEndTime);

		// Set new sale state
		saleState = States.Failed;

		// Return all the funds to the buyers
		returnToBuyers();
	}

	// Complete, success
	function finalSuccess() private {
		// Set the datetime of a successful processing
		successfulTime = now;

		// Set new sale state
		saleState = States.NoEntry;

		// Select the winning ticket number
		winnerTicket = getRand(totalTickets) + 1;

		// Get the winner address
		winnerKey = getWinnerKey();
	}

	/*
		Sale protection
	*/

	// Protection, return funds after the timeout if the winner did not unblocked the funds
	function revertFunds() public inState(States.NoEntry) {
		// Is it the time?
		require(now >= successfulTime + 30 * 1 days);

		// Setting the state of the sale
		saleState = States.Failed;

		// Return all the funds to the buyers
		returnToBuyers();
	}

	// Continue to return funds in case the process was interrupted
	function returnToBuyersContinue() public inState(States.Failed) {
		// We didn't finished the refund yet
		require(returnLastBuyerIndex < totalBuyers);

		// Start the return process
		returnToBuyers();
	}

	/*
		System
	*/

	// In case of emergeny, pull the lever
	function pullTheLever() public onlyCreator {
		// Destruct the contract
		selfdestruct(creator);
	}

	// Pseudo random function, from 0 to _max (exclusive)
	function getRand(uint256 _max) private view returns(uint256) {
		return (uint256(keccak256(block.difficulty, block.coinbase, now, block.blockhash(block.number - 1))) % _max);
	}

	// Get winner account
	function getWinnerAccount() public view returns(address) {
		// There should be a winner ticket selected
		require(winnerTicket > 0);

		// Return the winners address
		return buyers[winnerKey].ethAddress;
	}

	// Return all the funds to the buyers
	function returnToBuyers() private {
		// Check if there is enough balance
		if (this.balance > 0) {
			// Sending funds back (with a gas limiter check)
			uint256 _i = returnLastBuyerIndex;

			while (_i < totalBuyers && msg.gas > 200000) {
				buyers[_i].ethAddress.send(buyers[_i].amountPaid);
				_i++;
			}
			returnLastBuyerIndex = _i;
		}
	}

	// Get the winner key for a winner ticket
	function getWinnerKey() private view returns(uint256) {
		// Reset the variables
		uint256 _i = 0;
		uint256 _j = totalBuyers - 1;
		uint256 _n = 0;

		// Let's search who bought this ticket
		do {
			// Buyer found in a lower limiter
			if (buyers[_i].atTicket >= winnerTicket) {
				return _i;

			// Buyer found in a higher limiter
			} else if (buyers[_j].atTicket <= winnerTicket) {
				return _j;

			// Only two elements left, get the biggest
			} else if ((_j - _i + 1) == 2) {
				return _j;
			}

			// Split the mapping into halves
			_n = ((_j - _i) / 2) + _i;

			// The ticket is in the right part
			if (buyers[_n].atTicket <= winnerTicket) {
				_i = _n;

			// The ticket is in the left part
			} else {
				_j = _n;
			}

		} while(true);
	}
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ticketPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pullTheLever","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalBuyers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumTickets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWinnerAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creatorFeePercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"saleFinalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"returnLastBuyerIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"returnToBuyersContinue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"winnerTicket","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"revertFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"winnerKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTickets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"buyers","outputs":[{"name":"ethAddress","type":"address"},{"name":"atTicket","type":"uint256"},{"name":"amountPaid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"successfulTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_seller","type":"address"},{"name":"_ticketPrice","type":"uint256"},{"name":"_minimumTickets","type":"uint256"},{"name":"_creatorFeePercent","type":"uint256"},{"name":"_saleDays","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

Deployed Bytecode

0x606060405260043610610107576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302d05d3f1461045757806308551a53146104ac5780631209b1f614610501578063384b93f21461052a5780633abd01361461053f5780634e4afa1b14610568578063509515b51461059157806353613dd3146105e6578063603f4d521461060f57806370212761146106465780639c1f332f1461065b578063ae90e9f814610684578063b16d2fd114610699578063bb3f5330146106c2578063d476620b146106d7578063dd11247e14610700578063ed338ff114610729578063f2aa821814610752578063fcfdaa52146107c3575b6000806000600381111561011757fe5b600d60009054906101000a900460ff16600381111561013257fe5b141561025657600254341015151561014957600080fd5b60019150600254341115610168576002543481151561016457fe5b0491505b81600954600354031015151561017d57600080fd5b81600954016009819055506060604051908101604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160095481526020013481525060076000600854815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155905050600160085401600881905550600354600954101515610251576102506107ec565b5b610453565b6001600381111561026357fe5b600d60009054906101000a900460ff16600381111561027e57fe5b14156104445760076000600b54815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102f657600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff163111151561031c57600080fd5b60003414151561032b57600080fd5b6003600d60006101000a81548160ff0219169083600381111561034a57fe5b021790555060646004543073ffffffffffffffffffffffffffffffffffffffff16310281151561037657fe5b0490506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505050610452565b6000151561045157600080fd5b5b5b5050005b341561046257600080fd5b61046a61083b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104b757600080fd5b6104bf610860565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561050c57600080fd5b610514610886565b6040518082815260200191505060405180910390f35b341561053557600080fd5b61053d61088c565b005b341561054a57600080fd5b610552610921565b6040518082815260200191505060405180910390f35b341561057357600080fd5b61057b610927565b6040518082815260200191505060405180910390f35b341561059c57600080fd5b6105a461092d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105f157600080fd5b6105f961097d565b6040518082815260200191505060405180910390f35b341561061a57600080fd5b610622610983565b6040518082600381111561063257fe5b60ff16815260200191505060405180910390f35b341561065157600080fd5b610659610996565b005b341561066657600080fd5b61066e610a0b565b6040518082815260200191505060405180910390f35b341561068f57600080fd5b610697610a11565b005b34156106a457600080fd5b6106ac610a63565b6040518082815260200191505060405180910390f35b34156106cd57600080fd5b6106d5610a69565b005b34156106e257600080fd5b6106ea610ae3565b6040518082815260200191505060405180910390f35b341561070b57600080fd5b610713610ae9565b6040518082815260200191505060405180910390f35b341561073457600080fd5b61073c610aef565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b6107736004808035906020019091905050610af5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b34156107ce57600080fd5b6107d6610b3f565b6040518082815260200191505060405180910390f35b426006819055506001600d60006101000a81548160ff0219169083600381111561081257fe5b02179055506001610824600954610b45565b01600c81905550610833610bd2565b600b81905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108e757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60085481565b60035481565b600080600c5411151561093f57600080fd5b60076000600b54815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b600d60009054906101000a900460ff1681565b60008060038111156109a457fe5b600d60009054906101000a900460ff1660038111156109bf57fe5b1415156109cb57600080fd5b60055442101515156109dc57600080fd5b6002600d60006101000a81548160ff021916908360038111156109fb57fe5b0217905550610a08610ca4565b50565b600a5481565b6002806003811115610a1f57fe5b600d60009054906101000a900460ff166003811115610a3a57fe5b141515610a4657600080fd5b600854600a54101515610a5857600080fd5b610a60610ca4565b50565b600c5481565b6001806003811115610a7757fe5b600d60009054906101000a900460ff166003811115610a9257fe5b141515610a9e57600080fd5b62278d00600654014210151515610ab457600080fd5b6002600d60006101000a81548160ff02191690836003811115610ad357fe5b0217905550610ae0610ca4565b50565b600b5481565b60095481565b60055481565b60076020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60065481565b6000814441426001430340604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018260001916600019168152602001945050505050604051809103902060019004811515610bca57fe5b069050919050565b600080600080600092506001600854039150600090505b600c546007600085815260200190815260200160002060010154101515610c1257829350610c9e565b600c546007600084815260200190815260200160002060010154111515610c3b57819350610c9e565b60026001848403011415610c5157819350610c9e565b826002848403811515610c6057fe5b04019050600c546007600083815260200190815260200160002060010154111515610c8d57809250610c91565b8091505b600115610c9d57610be9565b5b50505090565b6000803073ffffffffffffffffffffffffffffffffffffffff16311115610d7a57600a5490505b60085481108015610cde575062030d405a115b15610d72576007600082815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60076000848152602001908152602001600020600201549081150290604051600060405180830381858888f19350505050508080600101915050610ccb565b80600a819055505b505600a165627a7a72305820b3066a54c11914b0280ee699a266faa3985ec5663d585342f66d364dc782cc4f0029

Swarm Source

bzzr://b3066a54c11914b0280ee699a266faa3985ec5663d585342f66d364dc782cc4f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.