Ethereum

About

loETHery is a crypto lottery, based on Ethereum blockchain. Each participant has a chance to win a draw proportionally of their stake, for example: a participant sent 1 ETH, and total draw value is 10 ETH, so he/she has 10% of probability to win.
A draw is started by the autonomous backend script every 96 hours (but there are few conditions, see below).

A winner of a draw takes reward, that is equal of a sum of all participants' bets minus fee. The organizer's comission is 15% of total reward value.

loETHery is completely decentralised lottery and its powered by smart contract deployed here:

To participate you need to send simple ETH transaction (with any value) to the address above using your favorite wallet. You can also connect your Metamask wallet to the page. To do it click on 'participate' button on the header.

Draw conditions & limitations

To execute a draw its necessary to have at least 2 participants. If there are no enough participants, a draw can be delayed by additional 96 hours. If a draw was delayed 4 times in a row, all funds (minus gas fee) will be refunded.

If there are 2 participants or more, a draw will be processed instantly.

If some participant has stake, that exceeds 50% of the reward, this exceeding value (minus gas fee) will be refunded during a draw

Refund

Transaction fee (gas) is always charged to a user. Refund is possible in two cases:
  • when a draw was delayed 4 times in a row (entire amount minus gas to be refunded)
  • when participant's share exceeds 50% of the total reward (exceeding amount minus gas to be refunded)

Algorithm of draw in details

Defining of a winner of a draw includes following stages:
  1. Generate random value.
    It includes all paricipants' addresses and block info.
  2. Compute total reward value
  3. Loop over participants
    Sum up participants values sequentially and check, that the specific range includes random value, generated on the first stage.
    Hence, the higher the value, the higher the chance to win.
Very simplified example:

random = 35
reference = 100
participants = [2, 5, 7, 4] // total = 18
sum = 0
for (p in participants)
  share = p / total * reference // [11, 28, 39, 22]
  newSum = sum + share // [+0=11, +28=39, +39=78, +22=100]
  if (random in range [sum..newSum])
    we found a winner
    in this case it is the second participant, because [11..39] includes the random value
  else
    sum = newSum

Feedback

We would love to hear from you. If you have any questions or suggestions, feel free to write us
[email protected]