dApp'ка которая принесет мне лям $$ (чсть 1)
хаха думали я больше ничего не напишу сюда и вообще я не настоящий true degen solidity developer?? вы еще никогда так не ошибались..... в общем, учить солидити я начал по этому видосику, посмотрел 7 часов и надоело ну оно и понятно ведь НАДО ДЕЙСТВОВАТЬ.
в видео рассматривали как сделать лоттерейку по билетикам и знаете что я вспомнил...? чудную пору рулеток по кс_очке... как же было приятно лутать по 50 долларовых копеек за рефералку и бежать ставить их на красное/кидать кучу ширпа из инвентаря на рулетку в надежде отжать у других челов их скинчики. ну вот моя САМАЯ ЛУЧШАЯ dApp'ка и будет что-то вроде рулетки по кс, только со ставками в крипте.
такс что я хочу от своего детища:
- начинается "фаза ставочек", все кидают свою крипту
- через некоторое время "фаза ставочек" заканчивается
- как-то случайно выбирается победитель
- ему переводятся депы всех участников
- перейти на шаг 1
самое сложное тут было генерировать случайное число (для выбора победителя) потому что оказывается такое делать на блокчейнике нельзя((( но не расстраивайтесь, не может же мое детище просто так умереть на этапе планирования. оказывается Chainlink который монета еще и имеет каких-то гениев в разработчиках и они грубо говоря сделали этот randomNumberGenerator (за который платить кстати надо еще ну капец)
вот тут самое потешное - весь день я провозился чтобы узнать почему он у меня то работает, то выдает ошибку, то просто игнорит :) оказывается я слишком много просил от их контракта и ему просто не хватало газа, чтобы выполнять все эти важные дела.
и так, зачем я вас всех сегодня тут собрал - гениальный контракт на тестнете эфира
(и его код)
вкратце что делать чтобы не поломать ничего:
0. пополнить контракт чейнлинка и верифнуть свой контракт у них
1. вызываем startRoulette() чтобы ну старт рулетте как бы
2. теперь можно кидать бабки через функцию deposit() и каждый депозит сохраняется в виде адреса отправителя, первого и последнего билетов.
вы спросите "какие билеты откуда билеты там уже взялись ээээ" и тут я расскажу, что в контракте 1 билет = 1 wei отправленный в депозит(1 eth = 1000000000000000000 weiдля бездарей). например, первый человек депозитит0.001 ETHи получает за него билеты от1до1000000000000000, следующий человек, допустим, депозитит0.003 ETHи получает за них билеты от1000000000000001до4000000000000000и так далее. прикольно, мне нравиться.
3. вызываем endRoulette() чтобы больше нельзя было делать депозит + с этой функцией идет запрос на получение случайного числа на контракт чейнлинка
4. ждем ответа от чейнлинка, он приходит в виде вызова функции fulfillRandomWords(). в этой же функции с помощью остатка от деления получаем случайное число в диапазоне количества билетов
5. вызываем sendWinnings() чтобы найти победителя по номеру билета и отправляем ему бабос + вызывается clearPreviousRound() которая чистит все эти грязные дела
все ура победа была проведена 1000% честная рулетка ура ура ура
но сейчас все эти функции для начала рулетки, окончания и отправки деняк вызываются админчиком, что не есть true decentralized так что хуйня переделывай (не буду). ладно, не переделывай, а доделывай (что еще хуже) так что ждите следующих частей и может даже сможете на каком-то бсц или троне проебать деньги затестить
еще делал такой же контракт, но только с псевдогенератором случайных чисел то есть могут ограбить. по этому сюда его закину тоже я что зря делал что-ли
красавчик на тестнете
код красавчика