Лотерея Bitcoin это лотерея, где каждый может выиграть, лотерея не принимает никакого участия, и процесс является прозрачным. Код, который выбирает победитель (ы) с открытым исходным кодом.
Как это работает?
Вы можете отправить произвольное количество Bitcoins (минимум 0,01 Bitcoin) на адрес. Адрес для следующего лотереи (закрывается 1 июля) является:
котировка
1LUeahDNnVwqh8utERNxPhoh7zdzSmh4AG
(Посмотреть: http://blockexplorer.com/address/1LUeahDNnVwqh8utERNxPhoh7zdzSmh4AG)Когда я выигрываю и сколько?
Все ставки рандомизированы к блоку. Каждый блок равен среднему депозита. Программа выбирает случайным образом блок и возвращает победителей и их доля (в процентах).
Например, если вы отправляете 0,1 Bitcoin и в среднем составляет 1 Bitcoin, вы, вероятно, в конечном итоге в одном блоке, а затем вы выиграете 10% розыгрыша.
Если вы отправляете 1 Bitcoin и в среднем составляет 1 Bitcoin, вы, вероятно, в конечном итоге в двух блоках случайным образом, например, 10 центов в одном блоке и 90 центов в другой. Если вы выиграете с первым блоком вы выиграете 10%, то второй блок будет возвращать 90% жеребьевку. Таким образом, чтобы быть уверенным, чтобы иметь шанс выиграть 100% вам нужно 2 биткойны.
Программа разработана таким образом, лотерея всегда будет возвращать 100% от размера джекпота.
У вас не обманывают?
Нет. Первый и второй блок 1 июля (после 0:00 UTC) будет использоваться в качестве случайных строк, добавив их и создать SHA256 хэш.
Код (Python)
Код:
импорт математика
билеты = [
["1Km4sASEeKUWPtjRaSxmVghF5FfkadWVei", 2],
["18uZGH42pcmHVtZ8sux7bCf8oJJtSCAAJs", 1],
["1Jmn97kfJ6DBBCuft6Z1oW8e2Lwgheyr6s", 2],
["1Jmn97kfJ6DBBCuft6Z1oW8e2Lwgheyr6s", 1],
["1Jmn97kfJ6DBBCuft6Z1oW8e2Lwgheyr6s", 1],
]
Класс BitcoinLottery:
Защиту __init __ (Я):
self.total = 0
для й в билетах:
self.total + = х [1]
self.BLOCKSIZE = INT (Math.ceil (self.total/float (LEN (билеты))))
Защита перетасовать (я, рант):
= 0
Prevx = 0
для т в диапазоне (LEN (билеты)):
J = 0
перетасовать = 0
для й в интервале (т, Len (RAND)):
J = J + Ord (RAND [х])
перетасовать = J% LEN (билеты) - я
билеты [I], билеты [я + перетасовать] = билеты [я + перетасовать], билеты [я]
Если я < Len (RAND) -1):
I + 1 =
еще:
= 0
Защита вычислить (Я):
блоки = []
Блок = 0
для й в билетах:
к = х [0]
V = х [1]
NBLOCK = блок
в то время как (ст>0):
г = self.BLOCKSIZE - блок% self.BLOCKSIZE
если (ст <= Г):
а = v
NBLOCK + = v
v = 0
еще:
а = г
V - = г
NBLOCK + = г
blocks.append ([INT (блок / self.BLOCKSIZE), к, а])
Блок = NBLOCK
Rand = 0
Распечатать("Всего: " + Ул (с плавающей точкой (self.total) / 100) + " Bitcoins")
для й в блоках:
если (х [0] == RAND):
печать (х [1] + " выиграл " + Str (с плавающей точкой (х [2] * self.total) / 10000 * (100 / self.BLOCKSIZE)) + " Bitcoins")
бит = BitcoinLottery ()
bit.shuffle ( '3029309209i1');
bit.calculate ()